Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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 将列汇总为数据框中的新列_R_Dataframe - Fatal编程技术网

R 将列汇总为数据框中的新列

R 将列汇总为数据框中的新列,r,dataframe,R,Dataframe,我有一个数据帧df_工作文件: group | value a | 1 a | 3 b | 2 b | 2 我想添加两个新列-一个用于最小值,另一个用于最大值 group | value | max | min a | 1 | 3 | 1 a | 3 | 3 | 1 b | 2 | 2 | 2 b | 2 | 2 | 2 现在,我循环遍历

我有一个数据帧df_工作文件:

group  | value
 a     |   1
 a     |   3
 b     |   2
 b     |   2
我想添加两个新列-一个用于最小值,另一个用于最大值

group  | value | max | min
 a     |   1   |  3  |  1
 a     |   3   |  3  |  1
 b     |   2   |  2  |  2
 b     |   2   |  2  |  2

现在,我循环遍历每一行并获取组的数据子集的最小/最大值,但对于大型数据集来说,这真的很慢。执行此操作的有效方法是什么?

使用
dplyr
软件包,您可以执行以下操作:

df_workingFile %>% 
  group_by(group) %>% 
  mutate(max = max(value), min = min(value)) %>% ungroup()

  # A tibble: 4 x 4
   group value   min   max
   <chr> <dbl> <dbl> <dbl>
1      a     1     1     3
2      a     3     1     3
3      b     2     2     2
4      b     2     2     2
df\u工作文件%>%
分组依据(分组)%>%
变异(最大值=最大值,最小值=最小值))%>%ungroup()
#一个tibble:4x4
组值最小值最大值
1 a 11 3
2 a 3 1 3
3 b 2 2
4 b 2 2

使用
dplyr
软件包,您可以执行以下操作:

df_workingFile %>% 
  group_by(group) %>% 
  mutate(max = max(value), min = min(value)) %>% ungroup()

  # A tibble: 4 x 4
   group value   min   max
   <chr> <dbl> <dbl> <dbl>
1      a     1     1     3
2      a     3     1     3
3      b     2     2     2
4      b     2     2     2
df\u工作文件%>%
分组依据(分组)%>%
变异(最大值=最大值,最小值=最小值))%>%ungroup()
#一个tibble:4x4
组值最小值最大值
1 a 11 3
2 a 3 1 3
3 b 2 2
4 b 2 2

df$max=ave(df$value,df$group,FUN=max);df$min=ave(df$value,df$group,FUN=min)
@Henrik我认为你在结束问题时有点苛刻,因为这是重复的。不一定是这一个,但我今天跑到另外两个帖子,你把它们标记为重复的,我不太确定它们是那些线程的重复。你当然是金獾;)@谢谢你的反馈!如果您愿意,请随时联系。(我刚刚检查了我重复提问的十个最新问题——到目前为止,没有对它们进行重新投票,这可能表明很多同行同意我关闭的选择,以及我对重复目标的选择)。@Henrik别误会我的意思。我不是说他们错了,而是说他们很严厉。不管怎么说,你知道重新提出问题的机会很低,而且当他们被欺骗时,机会就更低了。总之,这是我的观点,它可能是对的,也可能是错的。
df$max=ave(df$value,df$group,FUN=max);df$min=ave(df$value,df$group,FUN=min)
@Henrik我认为你在结束问题时有点苛刻,因为这是重复的。不一定是这一个,但我今天跑到另外两个帖子,你把它们标记为重复的,我不太确定它们是那些线程的重复。你当然是金獾;)@谢谢你的反馈!如果您愿意,请随时联系。(我刚刚检查了我重复提问的十个最新问题——到目前为止,没有对它们进行重新投票,这可能表明很多同行同意我关闭的选择,以及我对重复目标的选择)。@Henrik别误会我的意思。我不是说他们错了,而是说他们很严厉。不管怎么说,你知道重新提出问题的机会很低,而且当他们被欺骗时,机会就更低了。总之,这是我的观点,它可以是对的,也可以是错的。