按R中各组的文本计数进行聚合
我想数一数每组中每个id有多少文本。 例如对于组_id=11中的id=123,只有两个文本短语, 对于组_id=11中的id=123,也只有2个文本短语。 所以作为我想要的输出按R中各组的文本计数进行聚合,r,dplyr,R,Dplyr,我想数一数每组中每个id有多少文本。 例如对于组_id=11中的id=123,只有两个文本短语, 对于组_id=11中的id=123,也只有2个文本短语。 所以作为我想要的输出 mydata=structure(list(id = c(123L, 123L, 124L, 124L), text = structure(c(3L, 4L, 2L, 1L), .Label = c("bad", "good", "I love u", "u bad"), class = "factor"),
mydata=structure(list(id = c(123L, 123L, 124L, 124L), text = structure(c(3L,
4L, 2L, 1L), .Label = c("bad", "good", "I love u", "u bad"), class = "factor"),
group_id = c(11L, 11L, 11L, 11L)), class = "data.frame", row.names = c(NA,
-4L))
我使用q=aggregate(data$text,by=list(Category=data$group\u id),FUN=sum)
但我没有得到需要的结果
如何获得结果?您的预期输出是什么 您可以使用它返回一个按
group\u id
列出的列表(我假设不止group\u id=11
)
你的预期产出是多少 您可以使用它返回一个按
group\u id
列出的列表(我假设不止group\u id=11
)
不太确定您想要什么:
lapply(split(mydata,mydata$group_id), function(x) table(x$id))
$`11`
123 124
2 2
是这样吗?不太确定您想要什么:
lapply(split(mydata,mydata$group_id), function(x) table(x$id))
$`11`
123 124
2 2
是这样吗?您只是在查找
表(mydata$id,mydata$group\u id)
?您使用了dplyr
标记,所以可能是这个库(dplyr);mydata%%>%group\U by(id,group\U id)%%>%摘要(text=n\u distinct(text))
?(如果您需要distinct)。@s\t更简单的方法可能是:mydata%>%count(id,group\u id)
@Ali nice,如果不需要distinct,我建议您使用它。OP没有说明它(两者都不清楚),所以我认为这两种解决方案都可以使用。@s\t,一个问题,假设id=123有10行,但只有2行有文本。8行是空的。但我如何不仅总结文本行,还要总结空行呢。也就是说,在output id=123,text=10中,您是否正在查找表(mydata$id,mydata$group_id)
?您使用了dplyr
标记,因此可能是这个库(dplyr);mydata%%>%group\U by(id,group\U id)%%>%摘要(text=n\u distinct(text))
?(如果您需要distinct)。@s\t更简单的方法可能是:mydata%>%count(id,group\u id)
@Ali nice,如果不需要distinct,我建议您使用它。OP没有说明它(两者都不清楚),所以我认为这两种解决方案都可以使用。@s\t,一个问题,假设id=123有10行,但只有2行有文本。8行是空的。但我如何不仅总结文本行,还要总结空行呢。即,在输出id=123中,文本=10
tapply(mydata$text, mydata$id, function(x) sum(table(x)))
123 124
2 2