我有两个问题,我相信与 R 打交道都很简单。
我想创建一个 IF 语句,将 NA 值分配给列中的某些行。我尝试过以下命令:
a[a[,21]==0,5:10] <-NA
错误提示:
Error in [<-.data.frame(tmp, a[, 21] == 0, 5:20, value = NA) : missing values are not allowed in subscripted assignments of data frames
本质上,该代码应该采用第 21 列中的任何 0 值,并将该行的第 5 列到第 10 列的值替换为 NA。第 21 列中已经有 NA,但我不确定这是否有任何作用?
我根本不知道如何制作下一个函数。我需要操纵包含阳性和阴性对照的数据。但是,当我操作数据时,我不希望将阳性和阴性对照值排除在操作之外,但我希望阳性和阴性对照保留在列中,因为我稍后必须使用它们。无论如何,是否可以暂时忽略这些值,以便它们不包含在操作中?
这里是示例数据:
L = c(2,1,4,3,1,4,2,4,5,1)
R = c(2,4,5,1,"Neg",2,"",1,2,1)
T = c(2,1,4,2,"CTRL",2,"PCTRL",2,1,4)
test <- data.frame(L=L,R=R,T=T)
如果可能的话,我希望能够根据字符“Neg”“CTRL”/“”“PCTRL”暂时忽略这些行,而不是它们在数据框中的位置。请注意,对于阴性对照,Neg 和 CTRL 位于不同的列、同一行中,就像阳性对照中的空白和 PCTRL 位于不同的列但相同的行中一样。考虑到这些奇怪的条件,有什么办法可以做到这一点吗?
希望这写得足够清楚,我提前感谢任何花时间帮助我的人!
最佳答案
尝试将数据框子集到 R 不是“Neg”的那些行:
subset(test, R!="Neg")
对于 NA 问题,您的数据框中可能已经有 NA,对吧?尝试一下是否有效:
a[a[,21] %in% 0, 5:10] <- NA
关于r - R 的两个数据格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6501989/