我在 .csv 文件中有一个由 180 个国家/地区组成的面板数据,我想创建 180 个国家/地区的一个子集,以基于该子集运行回归。
这是我的数据集的屏幕截图:
我一直在玩弄子集函数,但我似乎无法让它正常工作。
最终,我应该如何创建一个仅包含例如“Albania”、“United States”的子集,同时保持其他列相同。
感谢您的任何建议。
这是非常基本的子集,您可以在 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"))
尝试使用subset
函数
subset(YourData, country=c('Albania', 'United States'))
有关详细信息,请参阅?subset
。
一个例子:(编辑感谢@Roman Luš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
在这里,您将学习如何制作一个很好的可重现示例来说明您的问题。