如何从 R 中的另一个数据帧填充数据帧?

时间:2021-04-15 01:45:42

标签: r

我想用来自 df1 的信息填充 df2。

df1 如下

ID   Mutation
1    A
2    B
2    C
3    A

df2 如下

ID   A   B   C
1
2
3

例如,如果在 ID 1 中发现突变 A,那么我希望它在 df2 中标记为“Y”。

所以 df2 结果应该是

    ID   A   B   C
    1    Y
    2        Y   Y
    3    Y

我有数百个 ID 和 20 多个突变。如何在 R 中有效地实现这一目标?谢谢!

2 个答案:

答案 0 :(得分:1)

使用 data.table 你可以试试

setDT(df)
df2 <- dcast(df,formula = ID~Mutation )
df2[, c("A", "B", "C") := lapply(.SD, function(x) ifelse(is.na(x), " ", "Y")), ID]
df2
#Output
   ID A B C
1:  1 Y    
2:  2   Y Y
3:  3 Y    

答案 1 :(得分:0)

创建一个值为 'Y' 的新列并以宽格式转换数据。

library(dplyr)
library(tidyr)

df %>%
  mutate(value = 'Y') %>%
  pivot_wider(names_from = Mutation, values_from = value, values_fill = '')

#     ID A     B     C    
#  <int> <chr> <chr> <chr>
#1     1 "Y"   ""    ""   
#2     2 ""    "Y"   "Y"  
#3     3 "Y"   ""    ""   

数据

df <- structure(list(ID = c(1L, 2L, 2L, 3L), Mutation = c("A", "B", 
"C", "A")), class = "data.frame", row.names = c(NA, -4L))