在R mutate中使用条件和摘要函数

在R mutate中使用条件和摘要函数,r,dataframe,conditional,dplyr,R,Dataframe,Conditional,Dplyr,我现在在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,将较低的值除以较高的值,如果该值小于.5,则使用V6=a,而ifelse使用V6=b。

我现在在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,将较低的值除以较高的值,如果该值小于.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)
df%>%突变(类型=如果(最小/最大<.5)A,
如果没有,B)
但我知道这是不对的。
谢谢大家!

您也可以在不使用
ifelse

 df1 %>% 
   group_by(Animal) %>% 
   mutate(Type= c('A', 'B')[((min(V4)/max(V4)) >=0.5)+1L])
#  V1 V2 V3 V4 Animal Type
#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

使用
dplyr
您可以尝试以下操作

dat %>% group_by(Animal) %>% mutate(new = ifelse(min(V4)/max(V4) < 0.5, "A", "B"))

#Source: local data frame [6 x 6]
#Groups: Animal

#  X1 V2 V3 V4 Animal new
#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
dat%>%组(动物)%>%突变(新=ifelse(最小(V4)/最大(V4)<0.5,“A”,“B”))
#来源:本地数据帧[6 x 6]
#组:动物
#X1 V2 V3 V4动物新
#1 2 3 5狗A
#2 2 4 3 1狗A
#3 1 4 1 A类
#4 5 1 3 A类
#5 5 3鸟B
#634鸟B

如果只取列
V4
,其中
min=1
max=5
则可获得
V6=1/5
的所有值,该值为0.2,因此始终
A
。请解释清楚。也许你的意思是从V1到V4,
min
max
值部分不清楚我想按动物来做,这样V4的最小值除以每个动物V4的最大值,然后V6对每个动物(A或B)有不同的值
dat%>%groupby(animal)%>%mutate(new=ifelse(min(V4)/max(V4)<0.5,“A”,“B”)
我没有注意到分组,因为在您的原始代码中没有分组谢谢!这正是我想要的!