我在处理数据帧的级别名称时遇到了很大麻烦。
我有一个大数据框,其中一个colums是一个有很多级别的因素。
问题是某些数据是重复的,我的分析中的下一步不接受重复数据。所以我需要更改重复级别的名称,以便继续我的下一步。
让我举个例子:
假设我们这个简单的数据框有一个列:
> df
col_foo
1 bar1
2 bar2
3 bar3
4 bar2
5 bar4
6 bar5
7 bar3
如果我们查看该列,我们会发现它是一个具有5个不同级别的因素。
>df$col_foo
[1] bar1 bar2 bar3 bar2 bar4 bar5 bar3
Levels: bar1 bar2 bar3 bar4 bar5
好的,问题来了。查看级别bar2
和bar3
重复。我想知道的是如何添加级别名称,例如bar2_X
,并仅替换重复的名称。所以数据框应该变成这样:
> df
col_foo
1 bar1
2 bar2
3 bar3
4 bar2_X
5 bar4
6 bar5
7 bar3_X
这可能吗?我无法更改列的类,它应该仍然是一个因素,因此需要更改它的解决方案将无法解决我的问题,除非有可能再次强制考虑因素。
由于
答案 0 :(得分:10)
在列上使用make.names
致电unique = TRUE
。
df$col_foo <- factor(make.names(df$col_foo, unique = TRUE))
答案 1 :(得分:4)
如果您希望所有条目都是唯一的,那么只使用一个字符变量就不会对您产生太多影响。
执行所需操作的最简单方法可能是强制使用字符向量,使用duplicated
函数查找重复项并将某些内容粘贴到其末尾,然后如果要使用{{1}重新将它重新回到一个因素。可能是这样的:
factor
答案 2 :(得分:3)
您可以编辑因子变量的级别:
levels(df$col_foo) <- c(levels(df$col_foo),"bar2_X","bar3_X")
然后将重复的级别更改为您添加的新级别之一。