加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 使用两个标准对R中的数据帧进行子集化,其中一个是

发布时间:2020-12-14 06:05:15 所属栏目:百科 来源:网络整理
导读:我有一个像这样的数据集: col_a col_b col_c1 abc_boy 12 abc_boy 21 abc_girl 12 abc_girl 2 我需要仅根据col_b和col_c获取第一行,然后更改col_c中的valye,如下所示: df [grep(“_ boy $”,df [,“col_b”]) df [,“col_c”] ==“1”,“col_c”] - “是”
我有一个像这样的数据集:

col_a col_b    col_c
1     abc_boy  1
2     abc_boy  2
1     abc_girl 1
2     abc_girl 2

我需要仅根据col_b和col_c获取第一行,然后更改col_c中的valye,如下所示:

df [grep(“_ boy $”,df [,“col_b”])& df [,“col_c”] ==“1”,“col_c”]< - “是” 但上面的代码不行,因为第一个标准和第二个标准不是来自同一个集合. 我可以通过使用显式循环以愚蠢的方式做到这一点,或者进行“双层”子集化,如下所示:

df.a <- df[grep("_boy$",df[,"col_b"]),]              #1
df.b <- df[grep("_boy$","col_b"],invert=TRUE),]  #2
df.a <- df.a[df.a[,"col_c"]=="1","col_c"] <- "yes"   #3
df.a <- df.a[df.a[,"col_c"]=="2","col_c"] <- "no"    #4
df <- rbind(df.a,df.b)                               #5

但我不愿意,任何人都可以告诉我如何“合并”#1和#3?谢谢.

解决方法

尝试grepl而不是grep. grepl返回一个逻辑向量(匹配或不匹配x的每个元素),它可以与逻辑运算符组合.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读