【发布时间】:2019-02-11 11:40:22
【问题描述】:
我有一个示例 df,如下所示:
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,26,10,9,5,11,13))
原来的df很大,关于这个df要记住的地方:
- 只有 2 个组“Group1”和“Group2”
- 一个组下有多个sub_group,上面的df显示了部分子组
- 组 + 子组的总百分比加起来为 100%。在上面它不是因为它只是一个样本。因此,对于
Group1all 子组,如A, B, C等,“Group2”将加到 100 等。 Group1 和 Group2 的子组大致相同
问:
我需要创建一个名为Category 的列,它可以在Group.Name 级别上处理Total% 的范围。创建新列的条件是:
对于每个
Group.Name,无论Total%最高,类别列就是Sub_group_name名称。对于介于 10-30 之间的每个
Group.Name和Total%,类别列是“New_Group1”。对于每一个小于 10 的
Group.Name和Total%,类别列是“New_Group2”。
预期输出:
df_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,26,10,9,5,11,13),
"category"=c("A","A","New_Group1","New_Group1","New_Group2","New_Group1","New_Group1"))
【问题讨论】:
-
Total%在您的示例中是factor列。我觉得应该是numeric? -
在
df_output中的一个值在'Total' 中更改为12,即'df_test' 中的5 -
另外,请检查“df_output”中的“类别”。根据条件,某些值应位于“New_Group1”中
-
实际上“10”在 NewGroup2 中,因为当我说 10-30 时,我的意思是不包括 10 和 30。但是在看到解决方案之后,我知道如何切割..所以没问题