通过替换 R 中的单元格来复制行
Copy rows by replacing cells in R
我对R很陌生,让我解释一下这个问题。我有以下 data.frame:
df1<-data.frame(name = c("Ann", "Beth", "Jon", "Mark"),
test1 = c(1,3,2,3),
test2 = c("B",NA,"C",NA)
)
简单来说就是四个人。其中两个只参加了 test1 并获得了该测试的结果。另外两人参加了两项考试。我希望将此 data.frame 转换为以下内容:
df2<-data.frame(name = c("Ann", "Ann", "Beth", "Jon", "Jon", "Mark"),
test1 = c(1,"B",3,2,"C",3)
)
换句话说,我希望所有的测试结果都在一栏中。顺序并不重要,例如,“second Ann”可以在最后一行而不是在第二行。由于 Ann 和 Jon 进行了两次测试,我 (i) 为他们创建了一个额外的行,(ii) 将他们的 test2 结果复制到 test1,并且 (iii) 删除了 test2 列。
我的尝试。我首先在 test2:
中复制了具有非空值的行
df1 <- bind_rows(df1,
df1 %>%
filter_at(vars(starts_with("test2")), all_vars(!is.na(.))))
现在我想不通如何将新行中的 test2 结果传输到 test1。
这个有用吗:
df1 %>% mutate(test1 = as.character(test1)) %>% pivot_longer(!name, names_to = 'test') %>% select(-2) %>% na.omit()
# A tibble: 6 x 2
name value
<chr> <chr>
1 Ann 1
2 Ann B
3 Beth 3
4 Jon 2
5 Jon C
6 Mark 3
我对R很陌生,让我解释一下这个问题。我有以下 data.frame:
df1<-data.frame(name = c("Ann", "Beth", "Jon", "Mark"),
test1 = c(1,3,2,3),
test2 = c("B",NA,"C",NA)
)
简单来说就是四个人。其中两个只参加了 test1 并获得了该测试的结果。另外两人参加了两项考试。我希望将此 data.frame 转换为以下内容:
df2<-data.frame(name = c("Ann", "Ann", "Beth", "Jon", "Jon", "Mark"),
test1 = c(1,"B",3,2,"C",3)
)
换句话说,我希望所有的测试结果都在一栏中。顺序并不重要,例如,“second Ann”可以在最后一行而不是在第二行。由于 Ann 和 Jon 进行了两次测试,我 (i) 为他们创建了一个额外的行,(ii) 将他们的 test2 结果复制到 test1,并且 (iii) 删除了 test2 列。
我的尝试。我首先在 test2:
中复制了具有非空值的行df1 <- bind_rows(df1,
df1 %>%
filter_at(vars(starts_with("test2")), all_vars(!is.na(.))))
现在我想不通如何将新行中的 test2 结果传输到 test1。
这个有用吗:
df1 %>% mutate(test1 = as.character(test1)) %>% pivot_longer(!name, names_to = 'test') %>% select(-2) %>% na.omit()
# A tibble: 6 x 2
name value
<chr> <chr>
1 Ann 1
2 Ann B
3 Beth 3
4 Jon 2
5 Jon C
6 Mark 3