首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个或多个变量组合成R中的一个变量?

如何将两个或多个变量组合成R中的一个变量?
EN

Stack Overflow用户
提问于 2021-05-09 09:41:53
回答 2查看 72关注 0票数 1

我目前正试着用我的数据做t检验.我有三个变量(或者说分组)。养猫、养狗或不养宠物的人。现在,我想组成小组,把猫和狗人分成一个叫做“宠物”的群体。然后我把这一组和“不养宠物”组做比较。我该怎么做?

代码语言:javascript
复制
> mytable <- read.csv2("versuch.csv")
> mytable
  cats dogs none
1    3    1    3
2    5    2    2
3    3    6    5
4    8    8    9
5    5    5    8
6    6    9    2

我想让它看起来像这样

代码语言:javascript
复制
> mytable <- read.csv2("versuch.csv")
> mytable
  cats dogs none  pets
1    3    1    3  3
2    5    2    2  5
3    3    6    5  3
4    8    8    9  8
5    5    5    8  5
6    6    9    2  6
7                 1
8                 2
9                 6
10                8
...               ....

基本上,我想要一个额外的变量,它包含猫和狗两个变量的值。是否有可能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-09 10:36:05

数据文件中不同列的行数不能不等。您可以将NA的内容附加到其他列中。

代码语言:javascript
复制
vec <- unlist(mytable[c('cats', 'dogs')], use.names = FALSE)
mytable <- cbind(mytable[1:length(vec), ], pets = vec)
rownames(mytable) <- NULL
mytable

#   cats dogs none pets
#1     3    1    3    3
#2     5    2    2    5
#3     3    6    5    3
#4     8    8    9    8
#5     5    5    8    5
#6     6    9    2    6
#7    NA   NA   NA    1
#8    NA   NA   NA    2
#9    NA   NA   NA    6
#10   NA   NA   NA    8
#11   NA   NA   NA    5
#12   NA   NA   NA    9

数据

代码语言:javascript
复制
mytable <- structure(list(cats = c(3L, 5L, 3L, 8L, 5L, 6L), dogs = c(1L, 
2L, 6L, 8L, 5L, 9L), none = c(3L, 2L, 5L, 9L, 8L, 2L)), 
class = "data.frame", row.names = c(NA, -6L))
票数 0
EN

Stack Overflow用户

发布于 2021-05-09 14:45:33

我们可以使用来自add_row包的tibble

代码语言:javascript
复制
library(tidyverse)

df %>% 
  mutate(pets = cats) %>% 
  add_row(pets = df$dogs)

输出:

代码语言:javascript
复制
    cats  dogs  none  pets
   <dbl> <dbl> <dbl> <dbl>
 1     3     1     3     3
 2     5     2     2     5
 3     3     6     5     3
 4     8     8     9     8
 5     5     5     8     5
 6     6     9     2     6
 7    NA    NA    NA     1
 8    NA    NA    NA     2
 9    NA    NA    NA     6
10    NA    NA    NA     8
11    NA    NA    NA     5
12    NA    NA    NA     9

数据:

代码语言:javascript
复制
df <- tibble::tribble(
~cats, ~dogs, ~none,
3, 1, 3, 
5, 2, 2, 
3, 6, 5, 
8, 8, 9,
5, 5, 8,
6, 9, 2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67456275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档