r - 如何将数据框的行添加到另一个数据框的列中
问题描述
我有 2 个数据框。一个是一个名为 euro_adj 的空数据框:
flow country year frequency currency percentage notes
1 NA NA NA NA NA NA NA
还有一个叫 to_add 的我想“追加”到这个空数据框中。第一行是欧元,第二行是美元。
1999 2000 2001 2002
NA NA 89.08 NA
NA NA 60.2 NA
最终我想要这个最终的df:
flow country year frequency currency percentage notes
Export Austria 1999 Annual EUR NA NA
Export Austria 2000 Annual EUR NA NA
Export Austria 2001 Annual EUR 89.08 NA
Export Austria 2002 Annual EUR NA NA
Export Austria 1999 Annual USD NA NA
Export Austria 2000 Annual USD NA NA
Export Austria 2001 Annual USD 60.2 NA
Export Austria 2002 Annual USD NA NA
我试过这个
to_add_transpose = as.data.frame(t(to_add))
colnames(to_add_transpose) = c("EUR", "USD")
euro_adj$country = rep("Austria", ncol(to_add)*2)
euro_adj&flow = rep("Exports", ncol(to_add)*2)
euro_adj$year = rep(1999:2012, 2)
euro_adj$frequency = rep("Annual", ncol(to_add)*2)
euro_adj$percentage = c(to_add_trasnpose$EUR, to_add_transpose$USD)
但它不起作用,因为空数据框现在只有 1 行。我想我必须使用 rbind 或其他东西,但我不知道如何。
解决方案
如果我理解正确,您可以使用函数 'gather()' 等tidyr
使用.within()
base
检查它是否解决了您的问题:
library(dplyr)
library(tidyr)
# Yours data
to_add = data.frame(a=c(NA,NA),
b=c(NA,NA),
c=c(89.08,60.2),
d=c(NA,NA)
)
colnames(to_add) = c("1999","2000","2001","2002")
# Creating column of "coin"
to_add["coin"] = c("EUR","USD")
# Just numbers of rows and columns
nr = nrow(to_add)
nc = ncol(to_add)-1
# Transforming data, like "transpose"
to_add = gather(data = to_add,"year","value",1:4)
# build another data frame
euro_adj = data.frame(flow=rep("Exports", nc*nr),
country=rep("Austria", nc*nr),
year=rep(1999:2002, nr),
frequency=rep("Annual", nc*nr),
# Set curency by order
currency= to_add[order(to_add$coin),"coin"],
percentage=NA[1:nc*nr],
notes=NA[1:nc*nr]
)
# set values
set = to_add[!is.na(to_add$value),c("coin","year","value")]
euro_adj = euro_adj %>%
within(percentage[year %in% set$year & currency %in% set$coin] <- set$value)
# Print data frame
euro_adj
威奇给出:
flow country year frequency currency percentage notes
Exports Austria 1999 Annual EUR NA NA
Exports Austria 2000 Annual EUR NA NA
Exports Austria 2001 Annual EUR 89.08 NA
Exports Austria 2002 Annual EUR NA NA
Exports Austria 1999 Annual USD NA NA
Exports Austria 2000 Annual USD NA NA
Exports Austria 2001 Annual USD 60.20 NA
Exports Austria 2002 Annual USD NA NA
推荐阅读
- swift - 如何将字符串转换为字符数组?
- javascript - 如何在没有 html 的 javascript 中创建有序/编号列表
- jdbc - Salesforce JDBC 连接
- html - Material UI React 应用程序中没有滚动条的全高和全宽
- java - 编写特征属性检查总是假的 Android BluetoothGatt 类
- php - 我如何在braintree GRANT API php中获取付款方式令牌
- identityserver4 - IdentityServer4 .Net 标准还是 .Net 核心?
- angular - 如何在“选择”组件中显示不同的名称?
- google-apps-script - 如何修复返回的错误代码 500 以登录需要 CSRF 令牌的网站
- c++ - Makefile 在 Linux 下工作但在 Windows 下不工作,在子目录中找不到文件