我是R的新手,无法找到解决方案。 我有一个包含国家代码,值和年份(面板数据)的数据集 “价值”栏有很多新闻。 对于每个国家,我想获得一个值为NA的年份列表。 使用dplyr函数可以实现吗?这是我的数据集的快照 Country codes, Years and Values
答案 0 :(得分:1)
DAT = read.table(text="Country.Code Year Value
UKR 2006 NA
UKR 2007 NA
UKR 2008 2000
ARE 2006 NA
ARE 2007 NA",
header=TRUE)
DAT[is.na(DAT$Value), 1:2]
Country.Code Year
1 UKR 2006
2 UKR 2007
4 ARE 2006
5 ARE 2007
要在一行中获得一个国家/地区的所有年份,您可以使用
temp = DAT[is.na(DAT$Value), 1:2]
aggregate(temp$Year, list(temp$Country.Code), paste, collapse=",")
Group.1 x
1 ARE 2006,2007
2 UKR 2006,2007
答案 1 :(得分:1)
使用which函数:
<强> DF [is.na(其(DF $值)),] 强>
答案 2 :(得分:1)
制作测试用例:
df <- read.table(text="Country Year Value
UKR 2006 NA
UKR 2007 NA
UKR 2008 2000
ARE 2006 NA
ARE 2007 NA", header=TRUE)
对于每个国家/地区,请获取值为NA
的年份列表
lapply(split(df, df["Country"]), function(x) x$Year[is.na(x$Value)])
# or equivalent but more readable
with(subset(df, is.na(Value)), split(Year, Country))
输出:
$ARE
[1] 2006 2007
$UKR
[1] 2006 2007
这是你需要的吗?