我有dplyr的问题我无法解决。此外,我没有完整可行的示例,因为问题只发生在完整的数据集中(我无法与您共享)。
我执行以下操作:
t %>% group_by(id, add=TRUE) %>%
summarise(minbplevel = min(ref, na.rm=T)
,maxbplevel = max(ref, na.rm=T)
) %>% filter(id %in% c(caseA,caseB))
结果是
id minbplevel maxbplevel
(dbl) (dbl) (dbl)
1 B 33.0 73.0
2 A 39.4 80.4
但是当我做的时候
t %>% group_by(id, add=TRUE) %>%
mutate(minbplevel = min(ref, na.rm=T)
,maxbplevel = max(ref, na.rm=T)
) %>% filter(id %in% c(caseA,caseB))
结果是:
id Level refparmax refparmin ref meanbptest minbplevel maxbplevel
(dbl) (chr) (int) (int) (dbl) (dbl) (dbl) (dbl)
1 B 0SD 69 68 49.0 52.00000 33 73
2 B min1SD 69 68 41.0 52.00000 33 73
3 B min2SD 69 68 33.0 52.00000 33 73
4 B plus1SD 69 68 59.0 52.00000 33 73
5 B plus2SD 69 68 73.0 52.00000 33 73
6 A 0SD 100 95 56.4 35.33333 NA NA
7 A min1SD 100 95 47.4 35.33333 NA NA
8 A min2SD 100 95 39.4 35.33333 NA NA
9 A plus1SD 100 95 67.4 35.33333 NA NA
10 A plus2SD 100 95 80.4 35.33333 NA NA
为什么在生成案例A的情况下NA,我不知道。似乎每次我在数据的子集上尝试它,第二种情况是数据是问题,但这只是一种预感。 只有18850的一个案例给出了这个问题,但没有任何可识别的问题使问题案例与其他案例不同。
请告知我可以尝试解决这个问题? 我可以考虑解决方法,创建汇总数据,然后将结果与原始数据合并。但我认为dplyr允许我一步到位。
我尝试删除或添加add = TRUE选项。这没有任何区别。
也许我以错误的方式使用它。
基于评论我试过:
subset(with(t,aggregate(ref~id, t, FUN= min, na.rm=TRUE, na.action= na.pass)),id %in% c(caseA,caseB))
结果是
id ref
4 B 33.0
5 A 39.4
我必须屏蔽数据的某些部分。
dput(head(subset(t,id %in% c(caseA,caseB)) , 12))
给出:
我再次用变量caseB和caseA替换了实际的id。这也不是发生问题的完整数据集。
structure(list(id = c(caseB, caseB, caseB, caseB, caseB,
caseA, caseA, caseA, caseA, caseA), Level = c("0SD", "min1SD",
"min2SD", "plus1SD", "plus2SD", "0SD", "min1SD", "min2SD", "plus1SD",
"plus2SD"), refparmax = c(69L, 69L, 69L, 69L, 69L, 100L, 100L,
100L, 100L, 100L), refparmin = c(68L, 68L, 68L, 68L, 68L, 95L,
95L, 95L, 95L, 95L), ref = c(49, 41, 33, 59, 73, 56.4, 47.4,
39.4, 67.4, 80.4), meanbptest = c(52, 52, 52, 52, 52, 35.3333333333333,
35.3333333333333, 35.3333333333333, 35.3333333333333, 35.3333333333333
)), .Names = c("id", "Level", "refparmax", "refparmin", "ref",
"meanbptest"), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -10L), vars = list(id), drop = TRUE, indices = list(
0:4, 5:9), group_sizes = c(5L, 5L), biggest_group_size = 5L, labels = structure(list(
id = c(caseB, caseA)), class = "data.frame", row.names = c(NA,
-2L), vars = list(id), drop = TRUE, .Names = "id"))
答案 0 :(得分:0)
如果我用零替换ref列中的所有NA,则mutate步骤正常工作。正如aosmith所说,它可能与在dplyr的开发版本中修复的mutate和NA问题有关。
但由于工作站的限制,我无法测试此建议。因此,我将使用NA替换步骤解决此问题,并在汇总步骤之后处理零值。