Tik*_*ung 1 conditional r missing-data assign
我NA在表中有正,负和值,我需要用值替换负值NA.正数和NA值应保持在表中.我的数据集类似于下面的数据集:
NO. q
1 NA
2 NA
3 -133.6105198
4 -119.6991209
5 28.84460104
6 66.05345087
7 84.7058947
8 -134.4522694
9 NA
10 NA
11 73.20465643
12 -69.90723514
13 NA
14 69.70833003
15 65.27859906
Run Code Online (Sandbox Code Playgroud)
我试过这个:
if (q>0) {
q=NA
} else {
q=q
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试
df1$q1 <- NA^(df1$q <0) * df1$q
df1
# NO. q q1
#1 1 NA NA
#2 2 NA NA
#3 3 -133.61052 NA
#4 4 -119.69912 NA
#5 5 28.84460 28.84460
#6 6 66.05345 66.05345
#7 7 84.70589 84.70589
#8 8 -134.45227 NA
#9 9 NA NA
#10 10 NA NA
#11 11 73.20466 73.20466
#12 12 -69.90724 NA
#13 13 NA NA
#14 14 69.70833 69.70833
#15 15 65.27860 65.27860
Run Code Online (Sandbox Code Playgroud)
或者使用ifelse
with(df1, ifelse(q < 0, NA, q))
Run Code Online (Sandbox Code Playgroud)
或者
is.na(df1$q) <- df1$q < 0
Run Code Online (Sandbox Code Playgroud)
或使用replace:
> df$q2 <- replace(df$q, which(df$q < 0), NA)
> df
NO. q q2
1 1 NA NA
2 2 NA NA
3 3 -133.61052 NA
4 4 -119.69912 NA
5 5 28.84460 28.84460
6 6 66.05345 66.05345
7 7 84.70589 84.70589
8 8 -134.45227 NA
9 9 NA NA
10 10 NA NA
11 11 73.20466 73.20466
12 12 -69.90724 NA
13 13 NA NA
14 14 69.70833 69.70833
15 15 65.27860 65.27860
Run Code Online (Sandbox Code Playgroud)
或与data.table一起使用:
library(data.table)
setDT(df)[q < 0, q := NA]
Run Code Online (Sandbox Code Playgroud)
或在dplyr管道中替换:
library(dplyr)
df %>% mutate(q = replace(q, which(q<0), NA))
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
sample <- c(1, -2, NA)
sample[sample < 0] <- NA
sample
[1] 1 NA NA
Run Code Online (Sandbox Code Playgroud)
或者,如果你正在使用a data.frame(假设它被称为df):
df$q[df$q < 0] <- NA
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10360 次 |
| 最近记录: |