首页 > 解决方案 > 根据当前值有条件地重命名单元格

问题描述

我有一个.csv形式的数据框,下面的片段视图;

name        sub_name                    level
Food        Food                        group
Food        Fruit and vegetables        subgroup
Food        Meat, poultry and fish      subgroup

我想用新名称替换级别列中的每个单元格值。如果当前显示“组”,我想将其更改为“主要”,如果当前显示“子组”,我想将其更改为“次要”

然后我计划创建一个新的重复 df,在其中我将使用以下方法删除“级别”为“主要”的所有行:

graphexpD = expDS
graphexpD <- graphexpD %>%
   filter(!grepl("primary", level))

标签: r

解决方案


如果 group 和 subgroup 是 then 中唯一的值,level那么ifelsebase R 中的一个简单行可以进行转换,然后是一个 base R subsetline 以返回 df2:

df1$level <- ifelse(df1$level == "group", "primary", "secondary")
df2 <- subset(df1, level != "primary")

推荐阅读