R 如何将一个数据帧的行添加到另一个数据帧的列中

R 如何将一个数据帧的行添加到另一个数据帧的列中,r,dataframe,transpose,R,Dataframe,Transpose,我有两个数据帧。一个是称为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 最终,我想要这

我有两个数据帧。一个是称为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)

但它不起作用,因为空数据帧现在只有一行。我想我必须使用rbind或其他东西,但我不知道如何使用。

如果我理解正确,您可以使用
tidyr的函数“gather()”
,然后使用
内的
基的函数

检查它是否解决了您的问题:

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

如果我理解正确,您可以使用
tidyr的函数“gather()”
,也可以使用
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

首先将它们转换为相同的格式(长/宽),然后添加一个公共变量,
merge/left\u join
或干脆
cbind
。要添加的
中有多少列?它的名字是吗?@NelsonGon to_add(1999年至2012年)中的14列。直到2002年我才在这里提取。年份是变量的名称。首先将它们转换为相同的格式(长/宽),然后添加一个公共变量,
merge/left\u join
或干脆
cbind
。要添加的
中有多少列?它的名字是吗?@NelsonGon to_add(1999年至2012年)中的14列。直到2002年我才在这里提取。年份是变量的名称。