使用R的数据帧中字符串及其ID的频率
目标是生成文本变量的频率,并将相应的ID与之关联 假设示例是一个数据帧,如下所示:使用R的数据帧中字符串及其ID的频率,r,dataframe,aggregate,frequency,text-mining,R,Dataframe,Aggregate,Frequency,Text Mining,目标是生成文本变量的频率,并将相应的ID与之关联 假设示例是一个数据帧,如下所示: Sample <- data.frame(ID = c('1', '2', '3', '4', '5', '6'), Var = c('How are you', 'Do not go', 'How are you',
Sample <- data.frame(ID = c('1', '2', '3', '4', '5', '6'),
Var = c('How are you',
'Do not go',
'How are you',
'Please go',
'How are you',
'Do not go'))
是否有一种方法可以在表中一起生成关联的ID,例如:
试试这个:
library(dplyr)
#Code
New <- Sample %>% group_by(Var) %>%
summarise(Freq=n(),IDS=toString(ID))
库(dplyr)
#代码
新%group_by(Var)%>%
总结(Freq=n(),IDS=toString(ID))
输出:
# A tibble: 3 x 3
Var Freq IDS
<chr> <int> <chr>
1 Do not go 2 2, 6
2 How are you 3 1, 3, 5
3 Please go 1 4
#一个tible:3 x 3
Var-Freq-IDS
1不要去2 2 6
你好吗1,3,5
3请走14
如果您应用数据,这里有另一个选项。表
> setDT(Sample)[, .(Freq = .N, ID.asso = list(ID)), keyby = Var]
Var Freq ID.asso
1: Do not go 2 2,6
2: How are you 3 1,3,5
3: Please go 1 4
我们可以将
dplyr
与stringr
library(dplyr)
library(stringr)
Sample %>%
group_by(Var) %>%
summarise(Freq = n(), IDS = str_c(ID, collapse=", "))
基本R解决方案:
data.frame(do.call(rbind, lapply(with(Sample, split(Sample, Var)), function(x){
with(x, data.frame(Var = unique(Var), Freq = nrow(x), ID = toString(ID)))
}
)
), row.names = NULL, stringsAsFactors = FALSE)
非常感谢:-)@Ray总是很乐意帮助你:)回答得好!我从你的
dplyr
答案中学到了这一点,因为我还是个新手:P+1!非常感谢您使用数据的替代方法。表非常感谢另一种方法非常感谢您在没有任何附加软件包的情况下使用这种方法
data.frame(do.call(rbind, lapply(with(Sample, split(Sample, Var)), function(x){
with(x, data.frame(Var = unique(Var), Freq = nrow(x), ID = toString(ID)))
}
)
), row.names = NULL, stringsAsFactors = FALSE)