如何合并具有冲突值的两个数据框

曼格尔

很抱歉,如果这是一个重复的问题,但是我环顾了类似的问题,却找不到真正的解决方案。无论如何,这里是这样:


我已将.csv文件读入表中。我正在处理3列:“ ID”(作者的ID),“ num_pub”(已发表的文章数)和“年”(1930年至2017年的跨度)。

我想获得一个最终表,其中每个“年份”和每个“ ID”都有“ num_pub”。因此,行将是“ ID”,列将是“ year”,并且在每年的下面都有相应的“ num_pub”或0(如果作者未发布任何内容)。


我尝试创建两个新表并以此处描述的几种不同方式合并它们,但无济于事。


所以首先我将文件读入表中: tab<-read.table("mytable.csv",sep=",",head=T,colClasses=c("character","numeric","factor"))

head(tab,10) ID num_pub year 1 00002 1 1977 2 00002 2 1978 3 00002 1 1983 4 00002 4 1984 5 00002 3 1990 6 00002 1 1994 7 00002 2 1996 8 00004 3 1957 9 00004 1 1958 10 00004 1 1959

这样,我便可以创建一个表,其中每个“ ID”都有一个单独的“年份”,如果作者在该年发布,则该值为1,否则为0: a<-table(tab[,1], tab[,3])

调用head(a,1)返回下表:pic


我想知道如何达到上述期望的结果。即,有一个表,其中的行将填充“ ID”,列将填充“ year”(从1930年到2017年),并且在每年的下面都有一个实际的“ num_pub”值或0值。表格的结构就像图片中所示的一样

感谢您的时间和帮助。我是R的新手,因此被卡在泥泞中。

编辑:这里介绍的重塑方法不能解决我的问题。我需要用零代替“ NA”,我希望我的年份从1930年开始,而不是作者发表的第一年。

nycrefugee

使用reshape2dcastone可以更改为宽格式,然后通过管道将NAs替换为0。

library(reshape2)
library(dplyr)

dcast(tab, ID~year, value.var = "num_pub") %>% 
  replace(is.na(.), 0)

     ID 1957 1958 1959 1977 1978 1983 1984 1990 1994 1996
1 00002    0    0    0    1    2    1    4    3    1    2
2 00004    3    1    1    0    0    0    0    0    0    0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将具有相同列名的两个数据框合并(合并)

在Python中合并具有非唯一值的列中的两个数据框

将具有唯一值的两个数据框合并一列

如何合并两个数据框并求和列的值

如何合并具有重复行的两个数据框?

如何合并一列中具有多个元素的两个数据框

如何合并具有不同索引的两个数据框?

如何在R中合并具有几个相同ID的两个数据框

如何合并两个数据框?

如果在两个数据框中都存在列及其值,如何合并两个数据框?

Python Pandas-如何将具有两个不同列的两个数据框合并到两个列表列

如何在R中的列中合并具有特定字符串匹配的两个数据框?

如何合并两个具有重叠列的数据框,更新现有值并添加新值

在熊猫中合并具有相同索引的两个数据框

合并具有不同日期时间索引的两个数据框

熊猫合并具有不同日期和列的两个数据框

熊猫合并具有不同列的两个数据框

合并具有几个不同列的两个数据框

当一个在熊猫中具有multiIndex时合并两个数据框

合并两个数据框以匹配具有不同长度的日期(不同的标题)

合并具有一个公共列名的两个数据框

合并具有相同列和行的两个数据框

R:外部合并具有不相等列的两个数据框

合并具有不同列级别的两个数据框

熊猫合并两个数据框求和值

将两个数据框合并为多个值

根据 instring 值合并两个数据框

合并两个数据框而不重复值

合并两个数据框并带有一些共同值