如何解决用R中的df中的阈值替换
我有一个df,例如
COL1 COL2 COL3
A 10 20
B 3 34
C 3 21
D 34 4
,我想将COL2
和COL3 < 10
中的所有值替换为“ S”
并且所有值>=10
由“ N.S”
并得到
COL1 COL2 COL3
A N.S N.S
B S N.S
C S N.S
D N.S S
我尝试过:
tab$pvalue_cov[tab$COL1<10 ] <- "S"
tab$pvalue_cov[tab$COL1>=10 ] <- "N.S"
tab$pvalue_gc[ tab$COL2<10 ] <- "S"
tab$pvalue_gc[ tab$COL2>=10 ] <- "N.S"
解决方法
您可以将这些列作为子集,并使用ifelse()
进行相应填充:
tab[c("COL2_p","COL3_p")] <- ifelse(tab[c("COL2","COL3")] < 10,"S","N.S")
tab
COL1 COL2 COL3 COL2_p COL3_p
1 A 10 20 N.S N.S
2 B 3 34 S N.S
3 C 3 21 S N.S
4 D 34 4 N.S S
数据:
tab <- read.table(header = TRUE,text = "COL1 COL2 COL3
A 10 20
B 3 34
C 3 21
D 34 4")
,
您也可以直接替换它:
cols <- c('COL2','COL3')
tmp <- tab[cols]
tab[cols][tmp < 10] <- 'S'
tab[cols][tmp >= 10] <- 'N.S'
tab
# COL1 COL2 COL3
#1 A N.S N.S
#2 B S N.S
#3 C S N.S
#4 D N.S S
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。