R将非数字列转换为数字列的帮助
我正试图帮助我的朋友,销售总监,了解他记录的通话数据。他特别感兴趣的一个专栏是“性格”。此列有字符串值,我正在尝试将它们转换为数值(即“未应答”转换为1,“应答”转换为2,等等),并删除未输入值的任何行。我已经创建了数据帧,用作.numeric,创建和删除了列/行等,但都没有用。我只是试着运行简单的R代码给他一些见解。非常感谢您的任何帮助。提前谢谢 另外,由于存在大量微妙的信息(个人电话号码和电子邮件),我不确定是否应该提供一些代码。首先:您应该始终提供具有代表性的样本数据;如果您的数据本质上是敏感的,请提供模型数据 除此之外,要将R将非数字列转换为数字列的帮助,r,dataframe,type-conversion,R,Dataframe,Type Conversion,我正试图帮助我的朋友,销售总监,了解他记录的通话数据。他特别感兴趣的一个专栏是“性格”。此列有字符串值,我正在尝试将它们转换为数值(即“未应答”转换为1,“应答”转换为2,等等),并删除未输入值的任何行。我已经创建了数据帧,用作.numeric,创建和删除了列/行等,但都没有用。我只是试着运行简单的R代码给他一些见解。非常感谢您的任何帮助。提前谢谢 另外,由于存在大量微妙的信息(个人电话号码和电子邮件),我不确定是否应该提供一些代码。首先:您应该始终提供具有代表性的样本数据;如果您的数据本质上是
字符
向量重新编码为数值
,可以将其转换为因子
,然后使用作为.numeric
。例如:
# Sample data
column <- c("Not Answered", "Answered", "Something else", "Others")
# Convert character vector to factor
column <- factor(column, levels = as.character(unique(column)))
# Convert to numeric
as.numeric(column);
#[1] 1 2 3 4
#示例数据
列或者,您可以创建一个新列,并使用ifelse
语句用数值填充它。为了举例说明,我们假设这是您的数据帧:
df <- data.frame(
Disposition = c(rep(c("answer", "no answer", "whatever", NA),3)),
Anything = c(rnorm(12))
)
df
Disposition Anything
1 answer 2.54721951
2 no answer 1.07409803
3 whatever 0.60482744
4 <NA> 2.08405038
5 answer 0.31799860
6 no answer -1.17558239
7 whatever 0.94206106
8 <NA> 0.45355501
9 answer 0.01787330
10 no answer -0.07629330
11 whatever 0.83109679
12 <NA> -0.06937357
我想你应该看看?系数。否则,构建一个查找表(作为命名向量)。也许值得一读。除此之外,请提供一个可复制的示例。否则,可能很难提供帮助。如果无法共享实际数据,您可能会将一些虚拟数据放在一起。一些可用于生成假数据的包:,
df$Analysis <- ifelse(df$Disposition=="no answer", 1,
ifelse(df$Disposition=="answer", 2, 3))
df
Disposition Anything Analysis
1 answer 2.54721951 2
2 no answer 1.07409803 1
3 whatever 0.60482744 3
4 <NA> 2.08405038 NA
5 answer 0.31799860 2
6 no answer -1.17558239 1
7 whatever 0.94206106 3
8 <NA> 0.45355501 NA
9 answer 0.01787330 2
10 no answer -0.07629330 1
11 whatever 0.83109679 3
12 <NA> -0.06937357 NA
df_clean <- na.omit(df)
df_clean
Disposition Anything Analysis
1 answer 2.5472195 2
2 no answer 1.0740980 1
3 whatever 0.6048274 3
5 answer 0.3179986 2
6 no answer -1.1755824 1
7 whatever 0.9420611 3
9 answer 0.0178733 2
10 no answer -0.0762933 1
11 whatever 0.8310968 3