【发布时间】:2017-03-09 14:54:31
【问题描述】:
假设你有一个数据框df,有5个属性:x1, x2, x3, x4, Year,如下:
set.seed(1)
x1 <- 1:30
x2 <- rnorm(10)
x3 <- rchisq(25, 2, ncp = 0)
x4 <- rpois(6, 0.94)
Year <- sample(2011:2014,30,replace=TRUE)
noRow <- max(length(x1), length(x2), length(x3), length(x4), length(Year))
df <- list(x1=x1, x2=x2, x3=x3, x4=x4, Year=Year)
attributes(df) <- list(names = names(df), row.names=1:30, class='data.frame')
和输出
x1 x2 x3 x4 Year
1 1 -0.6264538 4.2807226 0 2014
2 2 0.1836433 1.6273105 0 2014
3 3 -0.8356286 0.3144031 0 2012
4 4 1.5952808 0.6216108 0 2012
5 5 0.3295078 0.9374638 1 2014
6 6 -0.8204684 0.1363947 2 2013
7 7 0.4874291 2.4985843 <NA> 2013
8 8 0.7383247 2.0162627 <NA> 2012
9 9 0.5757814 2.7218900 <NA> 2012
10 10 -0.3053884 2.4119764 <NA> 2014
11 11 <NA> 1.1082308 <NA> 2013
12 12 <NA> 2.4140052 <NA> 2011
13 13 <NA> 3.1249573 <NA> 2011
14 14 <NA> 0.2615523 <NA> 2012
15 15 <NA> 0.4381074 <NA> 2014
16 16 <NA> 0.6944394 <NA> 2013
17 17 <NA> 0.8599189 <NA> 2014
18 18 <NA> 0.2924151 <NA> 2013
19 19 <NA> 1.6834339 <NA> 2012
20 20 <NA> 0.4848175 <NA> 2012
21 21 <NA> 3.1606987 <NA> 2011
22 22 <NA> 2.3705121 <NA> 2011
23 23 <NA> 0.7808625 <NA> 2013
24 24 <NA> 0.4621734 <NA> 2011
25 25 <NA> 1.9421776 <NA> 2012
26 26 <NA> <NA> <NA> 2013
27 27 <NA> <NA> <NA> 2014
28 28 <NA> <NA> <NA> 2012
29 29 <NA> <NA> <NA> 2012
30 30 <NA> <NA> <NA> 2011
我想按年份分组并确定在给定年份我们是否在一个或多个属性中没有条目。 使用
library("dplyr")
df1 <- df %>%
dplyr::group_by(Year) %>%
dplyr::mutate(count = n())
只给我在给定年份的条目数,但它没有告诉我在给定年份哪些属性存在/不丢失。 感谢您分享您的想法。
希望的输出:
Year x1 x2 x3 x4
2011 1 0 1 0
2012 1 1 1 1
2013 1 1 1 1
2014 1 1 1 1
其中1 表示在给定年份中变量至少有一个条目,否则0。
【问题讨论】:
-
如果你现在的意思是不丢失,你可以用 sum(!is.na(x)) > 0 之类的函数 summarise_each (或一些类似的动词)
-
@Frank 你能举个例子吗?
-
您可以在问题中提供一个完整的示例——包括您期望的输出。我只是在黑暗中试探你的尝试。
-
@Frank 公平点!我用希望的输出编辑了我的帖子。我尝试使用
dcast.data.table来做这个表,但它给了我每个变量条目的输出 1。