在R mutate中使用条件和摘要函数
我现在在R中有一个数据帧,看起来像这样在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。
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”)
我没有注意到分组,因为在您的原始代码中没有分组谢谢!这正是我想要的!