全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅 求助成功区
1859 5
2018-12-15
悬赏 100 个论坛币 已解决


本人现在刚刚接触R语言,现在有个问题想请教大家。现在我有两份数据,分别在两个数据框中,图一为第一份数据,图二为第二份数据,两份数据中,相同变量为year(年份)与code(地区代码),不同部分为asset与output(产出),现在我想用for循环进行匹配,匹配方式为:由于两个数据框中的相同变量为year与code,故我想将图二(数据框二)中的output按照相同的年份与地区代码匹配到图一中,并生成新的一列,列名为output。或者不用匹配,用赋值的方法也可以
附件: 您需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

AveryOatmeal 查看完整内容

楼主你好 r文件格式上传不支持 复制粘贴试一下以下代码 看看我x和y的数据是不是大概和你的datasets一个意思 我测试成功 没有error。merge这个function是不用在意行数问题的!楼上回复的那位是正确的。 x
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-12-15 19:14:41
楼主你好 r文件格式上传不支持 复制粘贴试一下以下代码 看看我x和y的数据是不是大概和你的datasets一个意思 我测试成功 没有error。merge这个function是不用在意行数问题的!楼上回复的那位是正确的。

x <- data.frame("year" = c(1996,1996,1997,1997,1998,1998,1998), "code" = c(11,12,12,12,12,13,13), "asset" = c(11112:11118))
y <- data.frame("year" = c(1996,1996,1997,1998,1998), "code" = c(11,12,12,12,13), "output" = c(4285287,248283,23847,143871,192837))
View(x)
View(y)

#this should be what you want
x_y <- merge(x,y,by=c("year","code"))

#use the following code when some rows of x have no matching rows in y by "year" and "code"
#it will still append the non-matching rows
x_y <- merge(x,y,by=c("year","code"),all.x = TRUE)

View(x_y)

如果你还测试不行的话 可以把原dataset发给我 我来试试看
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-12-15 20:00:18
merge(dataset1, dataset2, by=c("year", "code"),all.x=TRUE),类似这样既可。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-12-15 20:09:45
spherical 发表于 2018-12-15 20:00
merge(dataset1, dataset2, by=c("year", "code"),all.x=TRUE),类似这样既可。
显示报错呀,rror in fix.by(by.x, x) : 'by'必需指定唯一有效的列。 我的两份数据的行数不一样,
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-12-24 12:47:12
merge(dataset1, dataset2, by=c("year", "code"),all.x=TRUE)
楼上的这个代码没有问题。请楼主在执行代码时要注意去除所有符号的格式。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-12-24 14:41:24
AveryOatmeal 发表于 2018-12-15 19:14
楼主你好 r文件格式上传不支持 复制粘贴试一下以下代码 看看我x和y的数据是不是大概和你的datasets一个意思 ...
谢谢啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群