[英]Numerical Conditional replacement in R
我一直在尋找對我的代碼的寫調整,但找不到。 這可能是一個簡單的修復程序,但我找不到。 因此,我想尋求指導。
我的樣本數據集如下:
Sample
.
<25.0
0.6
2.22
2.23
2.45
2.65
.
.
17000
10000
6000
4000
2000
1000
750
我想將大於25的數字更改為除以1000的數字,並忽略任何非數字的內容(基本上忽略“ <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
我確定我對最后一部分的編碼不正確,但是找不到解決方法。 任何幫助深表感謝!!
謝謝!!
您也可以在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
}
})
如果您確實希望NA成為.
,您可以使用"."
替換該代碼中的NA
"."
。 請記住,如果這樣做,整個向量將是字符串而不是數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.