假设我有一个 Dataframe
| 原色|二次色|第三色|
| - ------|- ------|- ------|
| 红色|蓝色|绿色|
| 黄色|红色|不适用|
我希望通过检查颜色是否存在于三列中的任何一列(1)或三列中的任何一列(0)来进行编码。
| 红色|蓝色|绿色|黄色|
| - ------|- ------|- ------|- ------|
| 1个|1个|1个|无|
| 1个|无|无|1个|
我在R中工作,我知道我可以通过为每种颜色写一堆ifelse语句来完成这个任务,但是我的实际问题有更多的颜色,有没有更简洁的方法来完成这个任务?
5条答案
按热度按时间sczxawaw1#
你可以创建一个新的列来跟踪每一行,获得长格式的数据,并通过计算每种颜色的出现次数来恢复宽格式。
数据
xurqigkl2#
在以R为基数的情况下,你可以使用
sapply
和一个函数来检查所需名称的向量:注意,如果您不关心第二个表中列的顺序,可以将
nnames
泛化为nnames <- unique(unlist(df[!is.na(df)]))
数据
t0ybt7op3#
使用
outer
。jum4pzuy4#
以R为基:
如果您希望它作为 Dataframe :
如果同一行的多列中有一种颜色:
bfnvny8b5#
使用
mtabulate
或使用
base R