我在.csv文件中有180个国家/地区的面板数据,我想创建180个国家/地区的子集,以便根据子集运行回归。
以下是我的数据集的屏幕截图:
我一直在玩子集功能,但我似乎无法让它正常工作。
最终,我应该如何创建一个仅包括“阿尔巴尼亚”,“美国”的子集,同时保持其他列相同。
感谢您提出任何建议。
答案 0 :(得分:7)
这是非常基本的子集,您可以在SO和任何介绍性手册中找到几个答案。
假设你已经把你的csv文件读作一个名为“df”的对象,这样的事情应该可以完成这个任务:
df[df$country %in% c("United States", "Albania"), ]
将来:
dput(head(yourdata))
之类的内容。subset
功能但未取得成功,那么显示您为帮助其他人排除故障所做的工作会很有帮助。示例数据:
set.seed(1)
df <- data.frame(country = sample(letters[1:5], 15, replace = TRUE),
somerandomvalue = rnorm(15),
anotherrandomvalue = rnorm(15))
有关“国家/地区”列的一些摘要数据。向我们展示了五个独特的国家,总共有15个案例(行)。
> summary(df$country)
a b c d e
2 5 1 4 3
只选择一个子集:
> df[df$country %in% c("a", "b"), ]
country somerandomvalue anotherrandomvalue
1 b -0.005767173 0.80418951
2 b 2.404653389 -0.05710677
5 b -1.147657009 -0.69095384
10 a -0.891921127 -0.43331032
11 b 0.435683299 -0.64947165
12 a -1.237538422 0.72675075
14 b 0.377395646 0.99216037
或者,使用子集函数:
subset(df, country %in% c("a", "b"))
答案 1 :(得分:2)
尝试使用subset
功能
subset(YourData, country=c('Albania', 'United States'))
有关详细信息,请参阅?subset
。
一个例子:(感谢@RomanLuštrik和Ananda的评论)
> Data <- data.frame(Country=rep(letters[1:6], each=3), random=rnorm(18))
> subset(Data, Country %in% c('a','b'))
Country random
1 a -1.02159357
2 a -0.88256998
3 a -0.24138579
4 b 0.35844584
5 b 0.05288194
6 b -1.09724481
> subset(Data, Country == "a" | Country == "b")
Country random
1 a -1.02159357
2 a -0.88256998
3 a -0.24138579
4 b 0.35844584
5 b 0.05288194
6 b -1.09724481
Here您将学习如何制作一个很好的可重复示例来说明您的问题。