代码之家  ›  专栏  ›  技术社区  ›  Rahul Agarwal

基于不同组和不同子组的新列

  •  0
  • Rahul Agarwal  · 技术社区  · 7 年前

    此问题是以下问题的延伸,因此请参考此问题以获取数据和其他信息。

    New columns on Subgroup and Range of percentage in another column

    10-30% 具有 10-30% 有相同的名字。 New_Group1

    更新的询问

    1. 根据我的组名,组名可以不同吗。所以, 称为10-30% Group1_1 鉴于 称为10-30% Group2_1
    2. 组1 Highest 10-30% “和” less than 10% “鉴于 ,我可以剪成“ "," 40-10% "," 10-5% “和” less than 5%

    Sub_Group_name . 例如,我们削减的数量,减去最高的,新的组将被命名为 组1\u 1 , 等。

    df_test<- data.frame("Group.Name"=c("Group1","Group2","Group1","Group2","Group2","Group2","Group1"),
                    "Sub_group_name"=c("A","A","B","C","D","E","C"),
                    "Total%"=c(35,16,2,29,4,8,13))
    

    更新的输出数据:

    df_Updated_output<- data.frame("Group.Name"=c("Group1","Group2","Group1","Group2","Group2","Group2","Group1"),
                         "Sub_group_name"=c("A","A","B","C","D","E","C"),
                         "Total%"=c(35,16,2,29,4,8,13),
                         "category"=c("A","New_Group2_1","New_Group1_2","C","New_Group2_3","New_Group2_2","New_Group1_1"))
    

    产生新问题的原因是因为更新了提问,所以解决方案将发生巨大变化。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Hunaidkhan    7 年前

    下面提到的ifelse条件将为您提供所需的输出。

    df_test$category <- ifelse(df_test$Group.Name == "Group1" & df_test$Total. >=10 & df_test$Total. <= 30,"Group1_1",ifelse(df_test$Group.Name == "Group1" & df_test$Total. < 10,"Group1_2",ifelse(df_test$Group.Name == "Group2" & df_test$Total. >10 & df_test$Total. <= 40,"Group2_1",ifelse(df_test$Group.Name == "Group2" & df_test$Total. >=5 & df_test$Total. <= 10,"Group2_2",ifelse(df_test$Group.Name == "Group2" & df_test$Total. < 5,"Group2_3",df_test$Sub_group_name)))))
    

    我认为你提供了错误的数据在第2组第2(5%至40%)的条件,所以请看看我的条件,并作出相应的更改。