-2

我有 1 个数据框,其中包含国家列表及其国家代码。我希望能够在 R 中为给定的年份创建一个国家年份文件。

所以国家的数据框看起来像

代码 国家
2 美国
20 加拿大
31 巴哈马

我想

代码 国家 年份
2 美国 1945
2 美国 1946
2 美国 1947
2 美国 1948
20 加拿大 1945
20 加拿大 1946
20 加拿大 1947
20 加拿大 1948

这是一个如此简单的问题 - 但我花了一个小时没有任何运气,所以任何帮助将不胜感激。

谢谢!

4

2 回答 2

0

合并变量可以你所追求的(无论如何我认为)看看下面的代码,看看它是否符合你的要求。

# replicate data
countries <- c(rep("United States",4),rep("Canada",4))
dates <- c("1945","1946","1947","1948","1945","1946","1947","1948")

dates.country <- as.data.frame(cbind(countries,dates))

code.country <- as.data.frame(matrix(c("2","United States","20","Canada","31","Bahamas"),ncol=2, byrow = TRUE))

# set names for code.country
# variables to be merge on variable names must match

names(code.country) <- c("code","countries")

# this form of merge replicates what you want
combined.country <- merge(dates.country,code.country)

# there are a lot of options for merge so it is worth looking at
# ?merge to get and idea of what it can do. For example adding the 
# all=TRUE flag will mean that all data is represented even if it
# is only in one dataset

combined.country.all <- merge(dates.country,code.country, all=TRUE)
于 2013-11-11T21:49:45.363 回答
0
df <- read.table(text="Code Country
2 'United States'
20 'Canada'
31 'Bahamas'", header=T)

year   <- 1945:2005
len    <- length(year)
code   <- rep(df$Code,    each=len)
ctry   <- rep(df$Country, each=len)
dframe <- data.frame(code=code, country=ctry, year=year)
rm(code, year, len, ctry, df)
dframe
于 2013-11-11T21:30:54.793 回答