我一直在寻找对代码的写入调整,但找不到。这可能是一个简单的修复,但我找不到它。所以,我想请求指导。
我的样本数据集如下:
Sample
.
<25.0
0.6
2.22
2.23
2.45
2.65
.
.
17000
10000
6000
4000
2000
1000
750
我想将大于25的数字更改为除以1000的数字并忽略任何非数字(基本上忽略“&lt; 25.0”和“。”)并转换回“。”,因此以下结果:
Sample
.
.
0.6
2.22
2.23
2.45
2.65
.
.
17
10
6
4
2
1
0.75
到目前为止,我的代码如下:
sk$sample_1 <- sk$Sample
sk$sample_1 <- as.numeric(as.character(sk$sample_1))
#sk$sample_1[which(sk$sample_1 > 25 & !is.na(sk$sample_1)] = sk$sample_1/1000
sk$sample_1[sk$sample_1 > 25 & !is.na(sk$sample_1)] <- sk$sample_1/1000
#changing back to "."
sk$sample_1[is.na(sk$sample_1)] <- "."
但是,我获得了以下输出:
Sample sample_1
1 . .
2 <25.0 .
3 0.6 0.6
4 2.22 2.22
5 2.23 2.23
6 2.45 2.45
7 2.65 2.65
8 . .
9 . .
10 17000 .
11 10000 .
12 6000 6e-04
13 4000 0.00222
14 2000 0.00223
15 1000 0.00245
16 750 0.00265
我确定我错误地编写了最后一部分,但我无法找到它的修复程序。任何帮助深表感谢!!
谢谢!
答案 0 :(得分:0)
您也可以通过调用sapply
中的一些if / else操作来执行此操作:
sk$Sample_1 <- sapply(sk$Sample, function(x) {
y <- as.numeric(x)
if (is.na(y)) {
NA
} else if (y > 25) {
y / 1000
} else {
y
}
})
如果您确实希望NAs为.
,则可以使用NA
替换该代码中的"."
。请记住,如果你这样做,整个矢量将是字符串而不是数字。