Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用mutate将最小值添加为新列_R_Dplyr_Tidyr_Mutate - Fatal编程技术网

R 使用mutate将最小值添加为新列

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

我在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 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是冗余的。谢谢