【发布时间】:2016-09-15 18:01:18
【问题描述】:
我有一个大型样本数据集,其中包含样本是否可行的描述符 - 它看起来(有点)像这样,其中“desc”是描述列,“空白”表示样本不可行:
desc x y z
1 blank 4.529976 5.297952 5.581013
2 blank 5.906855 4.557389 4.901660
3 sample 4.322014 4.798248 4.995959
4 sample 3.997565 5.975604 7.160871
5 blank 4.898922 7.666193 5.551385
6 blank 5.667884 5.195825 5.232072
7 blank 5.524773 6.726074 4.767475
8 sample 4.382937 5.926217 5.203737
9 sample 4.976908 3.079191 4.614121
10 blank 4.572954 4.772373 6.077195
我想使用 if else 语句将包含不可用数据的行设置为 NA。最终的数据集应该是这样的:
desc x y z
1 blank NA NA NA
2 blank NA NA NA
3 sample 4.322014 4.798248 4.995959
4 sample 3.997565 5.975604 7.160871
5 blank NA NA NA
6 blank NA NA NA
7 blank NA NA NA
8 sample 4.382937 5.926217 5.203737
9 sample 4.976908 3.079191 4.614121
10 blank NA NA NA
我尝试了一个 for 循环,但我无法让 for 循环在一个循环中更改所有列。我的真实数据集有 40 列,所以我宁愿不必在单独的循环中处理它!这是一次更改一列的代码:
for(i in 1:length(desc)){
if(dat$desc[i] =="blank"){
dat$x[i] <- NA
}
else {
dat$x[i] <- dat$x[i]
}
}
我用这个脚本制作了示例数据:
desc <- c("blank", "blank", "sample", "sample", "blank", "blank", "blank", "sample", "sample", "blank")
x <- rnorm(10, mean=5, sd=1)
y <- rnorm(10, mean=5, sd=1)
z <- rnorm(10, mean=5, sd=1)
dat <- data.frame(desc,x,y,z)
对不起,如果这是一个基本问题,我已经花了整个上午的时间在论坛上寻找解决方案。
非常感谢任何帮助!
【问题讨论】:
标签: r if-statement for-loop dataframe