【发布时间】:2015-09-12 06:05:36
【问题描述】:
我目前在 R 中有一个如下所示的数据框
V1 V2 V3 V4 Animal
1 2 2 3 5 Dog
2 2 4 3 1 Dog
3 1 4 1 1 Cat
4 5 5 1 3 Cat
5 5 5 5 3 Bird
6 3 3 3 4 Bird
我使用 group_by 按动物对数据进行分组。 我想创建一个新的 V6 列,它采用 V4 列,将较低的值除以较高的值,如果该值小于 0.5,则 V6= A 并且 ifelse 具有 V6 = b.. 有没有办法在 R 中使用带有条件语句的 mutate 函数来做到这一点? 实际的数据框要大得多,所以我宁愿不必手动操作。 这就是我希望最终数据框的样子
V1 V2 V3 V4 Animal V6
1 2 2 3 5 Dog A
2 2 4 3 1 Dog A
3 1 4 1 1 Cat A
4 5 5 1 3 Cat A
5 5 5 5 3 Bird B
6 3 3 3 4 Bird B
这就是我的开始
df %>% mutate(Type = if(min/max < .5)A,
ifelse, B)
但我知道这是不正确的。 谢谢!
【问题讨论】:
-
如果您只取
V4列,其中min = 1和max = 5您将获得V6 = 1/5的所有值,即0.2,因此总是A。请解释清楚。也许您的意思是 从 V1 到 V4 -
min和max值部分不清楚 -
我想按动物来做,这样V4的最小值除以每个动物的V4最大值,然后V6对每个动物都有不同的值(A或B )
-
dat %>% group_by(Animal) %>% mutate(new = ifelse(min(V4)/max(V4) < 0.5, "A", "B")) -
我没有注意到 group by 因为在您的原始代码中没有组
标签: r dataframe conditional dplyr