我有1个数据框,其中包含国家/地区列表及其国家/地区代码。我希望能够在R中创建一个特定年份的国家年份文件。
所以国家/地区的数据框架似乎是
代码国家
2美国
20加拿大
31巴哈马
我想要
代码国家年份
2美国1945年
2美国1946年
2美国1947年
2美国1948年
20加拿大1945年
20加拿大1946年
20加拿大1947年
20加拿大1948年
这是一个简单的问题 - 但我花了一个小时没有运气,所以任何帮助都会受到赞赏。
谢谢!
答案 0 :(得分: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
答案 1 :(得分: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)