(我已经尝试过搜索这个,如果我错过了某个地方并且之前已经得到了答复,那么道歉:)
我有一个包含以下变量的数据框:
data< - data.frame(country,year,fdi,id)
**country / year / fdi / id**
Germany / 1991 / 1.1 / 1
Germany / 1992 / 1.4 / 1
Germany / 1993 / 1.3 / 1
Spain / 1991 / 1.2 / 2
Spain / 1992 / 2.3 / 2
Spain / 1993 / 2.4 / 2
Greece / 1991 / 1.4 / 3
Greece / 1992 / 1.7 / 3
Greece / 1993 / 1.8 / 3
我需要做的是为每个国家/地区创建对象,以存储所有观察年份的特定国家/地区的fdi
值。
例如:
fdigdp.germany = data$fdi [data$country=="Germany"]
fdigdp.germany = as.ts(fdi.germany)
...给我一个对象,它是一个值为1.1,1.4,1.3的向量。
是否有一种很好的方法可以通过for循环自动执行此操作,以便每个国家/地区使用fdi值获取一个对象。如果对象从他们所代表的国家派生出他们的名字,那将是一个加分,但即使只是一个索引号(例如" id"变量)也可以。
答案 0 :(得分:0)
您可以在框架上聚合并为每个组生成一行,使用c
函数将值组合到矢量中;
# country year fdi id
# 1 Germany 1991 1.1 1
# 2 Germany 1992 1.4 1
# 3 Germany 1993 1.3 1
# 4 Spain 1991 1.2 2
# 5 Spain 1992 2.3 2
# 6 Spain 1993 2.4 2
# 7 Greece 1991 1.4 3
# 8 Greece 1992 1.7 3
# 9 Greece 1993 1.8 3
# 10 Greece 1994 1.9 3
df2 <- setNames(aggregate(df$fdi, list(df$country), FUN=c), c('country','fdi_vector'))
# country fdi_vector
# 1 Germany 1.1, 1.4, 1.3
# 2 Greece 1.4, 1.7, 1.8, 1.9
# 3 Spain 1.2, 2.3, 2.4