R 使用mutate将最小值添加为新列
我在R中有以下数据帧R 使用mutate将最小值添加为新列,r,dplyr,tidyr,mutate,R,Dplyr,Tidyr,Mutate,我在R中有以下数据帧 library(dplyr) library(tidyr)### IMPORTED LIBRARIES DF<-data.frame("Index"=c(1,2,3,4,5,6,7,8,9,10)) DF$CI=c("A1", "A2", "A3", "A4", 'A1', "A6", "A7", "A8", "A9", "A9") 我想添加一列EI,以指示CI中的值重复时的正确索引值。预期产出如下 Index CI 1 1 A1 2 2
library(dplyr)
library(tidyr)### IMPORTED LIBRARIES
DF<-data.frame("Index"=c(1,2,3,4,5,6,7,8,9,10))
DF$CI=c("A1", "A2", "A3", "A4", 'A1', "A6", "A7", "A8", "A9", "A9")
我想添加一列EI,以指示CI中的值重复时的正确索引值。预期产出如下
Index CI
1 1 A1
2 2 A2
3 3 A3
4 4 A4
5 5 A1
6 6 A6
7 7 A7
8 8 A8
9 9 A9
10 10 A9
Index CI EI
1 1 A1 1
2 2 A2 2
3 3 A3 3
4 4 A4 4
5 5 A1 1
6 6 A6 6
7 7 A7 7
8 8 A8 8
9 9 A9 9
10 10 A9 9
列EI应显示对应于CI列中条目的相应索引值。在重复的情况下,返回的值应该是最小索引值。我使用DPLYR尝试了以下代码
DF%>%mutate(EI=case_when(CI==unique(CI)~min(Index)))
我得到以下输出
Index CI EI
1 1 A1 1
2 2 A2 1
3 3 A3 1
4 4 A4 1
5 5 A1 NA
6 6 A6 NA
7 7 A7 NA
8 8 A8 NA
9 9 A9 NA
10 10 A9 NA
我也尝试过这段代码,但没有得到想要的输出
DF%>%mutate(EI=min(Index))
输出
Index CI EI
1 1 A1 1
2 2 A2 1
3 3 A3 1
4 4 A4 1
5 5 A1 1
6 6 A6 1
7 7 A7 1
8 8 A8 1
9 9 A9 1
10 10 A9 1
我在这里请求一点帮助。我使用DPLYR,因为数据集很大(我给出了一个玩具数据集),循环时间很长。您需要
索引的最小值,在CI
的匹配值内。这就是groupby()
的作用:
DF %>%
group_by(CI) %>%
mutate(EI = min(Index))
您需要索引
的最小值,在CI
的匹配值内。这就是groupby()
的作用:
DF %>%
group_by(CI) %>%
mutate(EI = min(Index))
DF%>%mutate(EI=group\u Index(,CI))
或者您正在寻找DF%>%group\u by(CI)%%>%mutate(EI=min(Index))
备选方案:DF%>%mutate(EI=match(CI,CI))
@RonakShah也EI=first(Index)
,而不是min(Index)
@Rui Barradas第一(Index)和min(Index)有何不同(索引)DF%>%mutate(EI=group\u Index(,CI))
或者您正在寻找DF%>%group\u by(CI)%%>%mutate(EI=min(Index))
备选方案:DF%>%mutate(EI=match(CI,CI))
@RonakShah也EI=first(Index)
,而不是min(Index)
@Rui Barradas第一个(Index)怎么办与min(Index)不同好的。这就解释了。分组后,CI==CI是冗余的。谢谢好的。这就解释了。分组后,CI==CI是冗余的。谢谢