我曾经在任何地方都使用 dplyr,但包含了一些 plyr 函数。老实说,我不知道有什么区别或为什么事情发生了变化。相同的代码会产生不同的数据帧,具体取决于我导入的是 plyr 还是 tidyverse 。 我想要的是一个名为新生儿_stat 的数据框,其中每行包含唯一的 pid 和一个新的 c_pos 列。
raw_file_contents<- data.frame( pid=c(1,2,2,3,3), C_SYMP=c("Y","N","Y","N","N"))
newborn_stat<- raw_file_contents %>%
group_by(pid) %>%
summarise(c_pos= any( C_SYMP == "Y", na.rm = TRUE))
相反,我会得到一个 1 行的数据框,newborn_stat c_pos 等于 TRUE。 如果我将 dplyr::与 group_by 和 summarise 一起使用,我想我得到了正确的答案。 为什么会出现这种情况? 我一直在使用 Rmd 笔记本,因此当我尝试运行包含此行的前一个 block 时,事情不起作用。
最佳答案
所以我认为这是由于 dplyr
和 plyr
的功能工作方式不同所致。这是一个基本正确的假设,因为 dplyr
和 plyr
都有 summarize
函数,而 dplyr
有 group_by
,但 plyr
没有。如果您在稍后的 block 中导入 plyr
,然后重新运行问题中显示的表达式,则 summarize
被假定为来自 plyr
命名空间的表达式。因此您在该表达式中运行 dplyr::group_by
+ plyr::summarize
。
我希望他们在 plyr
中使用不同的名称进行摘要。或者在整个过程中保留相同的函数名称(如果有意义的话)。
关于r - tidyverse,plyr和dplyr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71088054/