r语言 - 基于最小频率创建新数据框



我正在尝试从现有数据框创建一个TopWords的新数据框。原始数据框data_to_export有太多的单词(bios(,我只想保留经常使用的单词(bios(,但我还需要保留与每个单词关联的ID号。

这就是我想出的,但它不起作用。它不喜欢if条件语句,但我不知道还能怎么做。

TopWords<- data_to_export if freq_terms(data_to_export$bios2 > 4)

我想最终得到来自data_to_export的相同数据,但仅限于单词出现五次或更多次的情况的数据。

例如

data_to_export (original data)
ID  bios2
1    i
1    love
1    playing
1    soccer
2    i
2    am
2    a
2    teacher
2    mom
2    grandma
2    sister
3    i
3    think
3    soccer
3    is
3    the 
3    best
4    soccer
4    player
5    i
5    like
5    soccer
5    i
5    could
5    play
5    soccer
5    all
5    day

New data frame:
1   i
1   soccer
2   i
3   i
3   soccer
4   soccer
5   i
5   soccer
5   i
5   soccer

任何帮助将不胜感激。谢谢!

编辑:奇怪的是,这实际上不起作用。字符串比较没有拾取两个i实例,但我无法解释为什么会这样。

将最后一行换成此内容:

TopWords <- data_to_export[grep(paste0('\b', names(freq)[freq], '\b', collapse = '\b|\b'), data_to_export$bios2), ]

下面是使用基本 R 的方法:

data_to_export <- data.frame(
ID = c(rep(1, 4), rep(2, 7), rep(3, 6), rep(4, 2), rep(5, 9)),
bios2 = c(
'i', 'love', 'playing', 'soccer', 'i', 'am', 'a', 'teacher', 'mom',
'grandma', 'sister', 'i', 'think', 'soccer', 'is', 'the', 'best', 'soccer',
'player', 'i', 'like', 'soccer', 'i', 'could', 'play', 'soccer', 'all',
'day'
)
)
freq <- table(data_to_export$bios2) >= 5
TopWords <- subset(data_to_export, bios2 == names(freq)[freq])

table计算字符串值的频率,并subset筛选出现 5 次或更多次的所需字符串的data.frame

最新更新