我有以下数据框:
name1 name2
A B
B D
C C
D A
Run Code Online (Sandbox Code Playgroud)
列"name1"和"name2"被视为因子,因此A,B,C和D被视为级别.但是,我想以某种方式转换此数据框,以便它成为
name1 name2
"A" "B"
"B" "D"
"C" "C"
"D" "A"
Run Code Online (Sandbox Code Playgroud)
换句话说,将A,B,C和D视为字符串的方式进行转换.
我怎样才能做到这一点?
Ric*_*rta 19
你正在寻找as.character,你需要应用于每一列data.frame
假设X您的data.frame
如果fctr.cols是您的因子列的名称,那么您可以使用:
X[, fctr.cols] <- sapply(X[, fctr.cols], as.character)
Run Code Online (Sandbox Code Playgroud)
您可以使用is.factor以下方法收集因子列:
fctr.cols <- sapply(X, is.factor)
Run Code Online (Sandbox Code Playgroud)
小智 5
这可能比上面的答案简单一点。
#where your dataframe = df
df.name1 <- as.character (df.name1)
df.name2 <- as.character (df.name2)
Run Code Online (Sandbox Code Playgroud)
我需要在工作中一直做这样的事情,因为数据太乱了。我已经能够使用 StringsAsFactors=FALSE 在导入时做到这一点,但在最新版本的 r 中,我在 read.csv 上遇到错误。理想情况下,我会尽快解决这个问题......同时,我一直在这样做,这是一种快速有效的方法。它将旧变量 foo(因子类型)转换为新变量 fooChar(字符类型)。我通常通过将新变量命名为与旧变量相同的方式就地进行,但您可能希望在信任它替换值之前使用它。
#Convert from Factor to Char
#Data frame named data
#Old Variable named foo, factor type
#New Variable named fooChar, character type
data$fooChar <-as.character(data$foo)
#confirm the data looks the same:
table (data$fooChar)
#confirm structure of new variable
str(data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41087 次 |
| 最近记录: |