R:合并两个数据帧(分组/汇总)时如何避免出错?
我有一个80000行的大数据帧。它是通过结合不同年份的单个数据框架创建的。origin变量表示条目原始数据框的年份 下面是前几个大数据框架行的示例,显示了2003年和2011年的数据框架是如何组合的R:合并两个数据帧(分组/汇总)时如何避免出错?,r,group-by,merge,summarize,R,Group By,Merge,Summarize,我有一个80000行的大数据帧。它是通过结合不同年份的单个数据框架创建的。origin变量表示条目原始数据框的年份 下面是前几个大数据框架行的示例,显示了2003年和2011年的数据框架是如何组合的 df_1: ID City State origin 1 NY NY 2003 2 NY NY 2003 3 SF CA 2003 1 NY NY 2011 3 SF CA 2011 2 NY NY 2011 4 LA
df_1:
ID City State origin
1 NY NY 2003
2 NY NY 2003
3 SF CA 2003
1 NY NY 2011
3 SF CA 2011
2 NY NY 2011
4 LA CA 2011
5 SD CA 2011
现在我想创建一个名为first_appearance的新变量,它为每个ID获取原始变量的最小值:
到目前为止,我已尝试使用:
prestep_final <- df_1 %>% group_by(ID) %>% summarise(first_apperance = min(origin))
final_df <- merge(prestep_final, df_1, by = "ID")
Prestep_最终工作并生成具有ID和第一个_外观的数据帧
不幸的是,合并步骤不起作用,只生成一个包含NA条目的数据帧
如何改进我的代码,以便生成类似上面final_df的表。如果您有任何建议,我将不胜感激,并且没有软件包首选项。如果您将Summary更改为mutate,则无需合并即可获得所需的结果:
图书馆管理员
df%组\u字节ID%>%
变异第一次出现=minorigin
>一个tibble:8x5
>组别:ID[5]
>ID城市国家起源第一次出现
>
>2003年11月1日纽约
>2 2003年纽约州纽约市
>3.3平方英尺CA 2003
>2011年4月1日纽约州2003年
>5.3平方英尺CA 2011 2003
>6.2纽约市2011年2003年
>7.4拉卡2011
>8.5 SD CA 2011
由v0.3.0于2020年6月10日创建,如果将摘要更改为变异,则无需合并即可获得所需结果:
图书馆管理员
df%组\u字节ID%>%
变异第一次出现=minorigin
>一个tibble:8x5
>组别:ID[5]
>ID城市国家起源第一次出现
>
>2003年11月1日纽约
>2 2003年纽约州纽约市
>3.3平方英尺CA 2003
>2011年4月1日纽约州2003年
>5.3平方英尺CA 2011 2003
>6.2纽约市2011年2003年
>7.4拉卡2011
>8.5 SD CA 2011
于2020-06-10由v0.3.0创建,带有数据表的选项
或者在R底
带有data.table的选项
或者在R底
谢谢你,@MarBio!谢谢你,@MarBio!这是一个非常巧妙的解决方案。谢谢@akrun!这是一个非常巧妙的解决方案。谢谢@akrun!
prestep_final <- df_1 %>% group_by(ID) %>% summarise(first_apperance = min(origin))
final_df <- merge(prestep_final, df_1, by = "ID")
library(data.table)
setDT(df)[, first_appearance := min(origin), ID]
df$first_appearance <- with(df, ave(origin, ID, FUN = min))