我在一个名为“值”的数据框中有一些值
IE:
Sam Ned Ted Ann
500 430 57 212
410 265 69 341
189 554 153 457
236 311 590 271
50 568 234 442
以及单独的数据框“标志”中的一些质量控制标志
Sam$F Ned$F Ted$F Ann$F
1 1 1 0
0 0 1 0
0 0 1 0
0 0 0 0
0 0 1 0
如果标志中的等效条目是 1,我想用 NA 替换“值”中的数字,即导致以下结果
Sam Ned Ted Ann
NA NA NA 212
410 265 NA 341
189 554 NA 457
236 311 590 271
50 568 NA 442
这个问题与这个问题非常相似:Replacecing certain values in data.frame in R
这已经通过“合并表”解决方案巧妙地解决了。
除了我有很多数据列可以执行此操作,而不仅仅是一个。但是,我应该能够获得相同的“合并表”解决方案来为我工作。
要合并 2 个表(并将 1 替换为 NA,我使用了以下
F2 <-Flags
F2[F2 == "1"] <- "NA"
# Create identical column names for values and F2 for matching
samples <-colnames(Rvalues)
colnames(F2) <-samples
#Create an ID column for F2 and values
F2$ID <- c(1,2,3,4,5)
Rvalues$ID <- c(1,2,3,4,5)
out2 <- merge(Rvalues, F2, by = c("ID"), all.x = TRUE)
生成的 out2 数据帧如下:
ID Sam.x Ned.x Ted.x Ann.x Sam.y Ned.y Ted.y Ann.y
1 1 500 430 57 212 NA NA NA 0
2 2 410 265 69 341 0 0 NA 0
3 3 189 554 153 457 0 0 NA 0
4 4 236 311 590 271 0 0 0 0
5 5 50 568 234 442 0 0 NA 0
所以我想使用上面链接中发布的解决方案(由 Chase 发布),在一个循环中遍历每个样本的列。
我尝试了以下方法:
for [i in samples]
{
out3 <- transform(out2, [i]$new = ifelse(is.na([i].x), [i].y, [i].x), [i].x = NULL, [i].y = NULL)}
它不工作(错误消息
"Error: unexpected '[' in:
"{
out3 <- transform(out2, newdata = ifelse(is.na(["")
所以我有问题,没有 [] 括号它也不起作用。
非常感谢任何修复,非常感谢