我不知道如何解决这个问题。我的数据文件看起来像这样(但要大得多):
df <- data.frame(word = c('word1','word2', 'word3', 'word4', 'word5', 'word6', 'word7'), code = c(1 , 2, 2, 2, 1, 1, 2), modality = c('cog', 'emo', 'soc', 'cog_emo', 'soc', 'soc_emo_cog', 'emo'))
df
word code modality
1 word1 1 cog
2 word2 2 emo
3 word3 2 soc
4 word4 2 cog_emo
5 word5 1 soc
6 word6 1 soc_emo_cog
7 word7 2 emo情态列显示该词被指定给哪个情态。但我需要数一数分配给一种方式的单词数。如果一个词被分配给多个模式,那么每个单词都必须被计算。因此,我希望重复分配多个模式的整个行,以便每行有一个模式。有点像这样:
word code modality
1 word1 1 cog
2 word2 2 emo
3 word3 2 soc
4 word4 2 cog
5 word4 2 emo
6 word5 1 soc
7 word6 1 soc
8 word6 1 emo
9 word6 1 cog
10 word7 2 emo正如我所说的,数据框架要大得多,所以我不能手动完成。谢谢你!!
发布于 2021-06-11 07:36:17
library(tidyverse)
df %>% mutate(modality = str_split(modality, "_")) %>% unnest(modality)
word code modality
<fct> <dbl> <chr>
1 word1 1 cog
2 word2 2 emo
3 word3 2 soc
4 word4 2 cog
5 word4 2 emo
6 word5 1 soc
7 word6 1 soc
8 word6 1 emo
9 word6 1 cog
10 word7 2 emo 发布于 2021-06-11 08:51:55
这里有一个data.table选项
> setDT(df)[,.(modality = unlist(strsplit(modality,"_"))),.(word,code)]
word code modality
1: word1 1 cog
2: word2 2 emo
3: word3 2 soc
4: word4 2 cog
5: word4 2 emo
6: word5 1 soc
7: word6 1 soc
8: word6 1 emo
9: word6 1 cog
10: word7 2 emohttps://stackoverflow.com/questions/67932908
复制相似问题