1.0 | 2.0 | 3.0 |
---|---|---|
大声的 | 抱怨 | 问题 |
疼痛 | 应力 | 糊涂 |
无光泽的 | 疼痛 | 应力 |
这是我的数据集,我想重新组织行,以便如果每列中出现一个单词,则将其转移到相应的行。例如
| 1.0 |2.0|3.0|
| --------------|--------------|--------------|
| 大声的|不适用|不适用|
| 疼痛|疼痛|不适用|
| 无光泽的|不适用|不适用|
| 不适用|抱怨|不适用|
| 不适用|应力|应力|
| 不适用|不适用|糊涂|
| 不适用|不适用|问题|
等等,这样每个单词都有自己的一行,如果该行中的单词出现在该列中,它就会与其他列匹配
我一直在寻找如何做到这一点,但找不到好的代码。我的一个想法是创建一个所有出现的单词列表,然后尝试将它们与每一列相匹配,但仍然没有找到这方面的代码。
4条答案
按热度按时间6ie5vjzr1#
我们可以在
base R
中使用match
-从unlist
艾德数据中获取unique
元素作为vector
,循环列,获取匹配元素的索引,以及replace
匹配元素的索引,并在处理长度后转换为 Dataframe 。数据
egdjgwm82#
这是一个
tidyverse
版本。由reprex package(v2.0.0)于2023-04-11创建
如果需要按出现顺序排列行,可以将第二个语句更改为
注意:
gather
和spread
函数被pivot_longer
和pivot_wider
函数取代。在我看来,旧的函数更容易使用,在这种情况下已经足够好了。新的函数功能更强大。shyt4zoc3#
快速+高效的数据表解决方案:
xurqigkl4#
下面是使用
stack
+reshape
的基本R选项它给出了
数据