我想用来自 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 中有效地实现这一目标?谢谢!
答案 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))