在Panel Data中提取特定国家/地区

时间:2013-03-11 17:07:02

标签: r panel extract

我在.csv文件中有180个国家/地区的面板数据,我想创建180个国家/地区的子集,以便根据子集运行回归。

以下是我的数据集的屏幕截图:http://i.imgur.com/e3s3XVn.png

我一直在玩子集功能,但我似乎无法让它正常工作。

最终,我应该如何创建一个仅包括“阿尔巴尼亚”,“美国”的子集,同时保持其他列相同。

感谢您提出任何建议。

2 个答案:

答案 0 :(得分:7)

这是非常基本的子集,您可以在SO和任何介绍性手册中找到几个答案。

假设你已经把你的csv文件读作一个名为“df”的对象,这样的事情应该可以完成这个任务:

df[df$country %in% c("United States", "Albania"), ]

将来:

  1. 您的数据截图很少使用。请改用dput(head(yourdata))之类的内容。
  2. 显示您尝试过的内容。不要简单地写“我一直在使用子集函数”。如果您想特别使用subset功能但未取得成功,那么显示您为帮助其他人排除故障所做的工作会很有帮助。

  3. 最小的例子

    示例数据:

    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您将学习如何制作一个很好的可重复示例来说明您的问题。