我有一个庞大的数据集,其结构与此类似:
FMID <- c(101,101,102,102,103,103,104,104)
IID <- c("101A","101B", "102A", "102B", "103A", "103B","104A", "1034")
PC1 <- c(2,NA,3,4,NA,4,NA,3)
ZY <- c(1,1,1,1,3,3,1,1)
df <- as.data.frame(cbind(FMID,IID, PC1, ZY))
字符串
我需要在变量PC1中复制一些值
因此,对于具有相同FMID且ZY==1的情况(如果其中一个,A或B,具有NA),我想使用具有相同FMID的另一个情况的信息来填充NA。
这里是预期的结果:
FMID <- c(101,101,102,102,103,103)
IID <- c("101A","101B", "102A", "102B", "103A", "103B","104A", "1034")
PC1 <- c(2,2,3,4,NA,4,3,3)
ZY <- c(1,1,1,1,3,3,1,1)
df_Expected <- as.data.frame(cbind(FMID,IID, PC1, ZY))
型
我已经尝试了ifelse,但我不能使它工作。提前谢谢你。
3条答案
按热度按时间fjnneemd1#
另一种方式如下所示:
字符串
deikduxw2#
data.table
字符串
创建于2023-12-13使用reprex v2.0.2
hsgswve43#
您可以使用
replace
by group将PC1
中的NA
s替换为同一FMID
组中的非NA值,仅当ZY
为1时。字符串