我正在尝试从现有数据框创建一个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
。