作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据框
test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"))
A B
1 aa i
2 be i
3 cg i
4 dh i
我想将 B
列中的 i
替换为 yes
仅当 B
列中的字符串 >e
被发现。
所以最后应该是这样的
A B
1 aa i
2 be yes
3 cg i
4 dh i
我试过了
test[(grep("e", test$A)),] <- as.data.frame(lapply(test, gsub, pattern= "i", replacement="yes", test$B))
虽然两个部分单独工作,但组合并没有给我想要的输出
最佳答案
有很多方法可以解决这个问题。在 data.table 中执行此操作的一种绝妙方法:
test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"))
library(data.table)
test = as.data.table(test)
test[grepl("e",A),B := "yes"]
或在 dplyr 中:
test<-data.frame(A=c("aa","be","cg","dh"),B=c("i","i","i","i"))
library(dplyr)
test = tbl_df(test)
test %>% mutate(B = ifelse(grepl("e",A),"yes",B))
关于仅当满足其他列中的条件时才替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39213720/
我是一名优秀的程序员,十分优秀!