替换R中的符号字符串
我已读取.csv文件,其中包含一列,我想用该列将两个字符串替换为值0和1 这是我的替换R中的符号字符串,r,R,我已读取.csv文件,其中包含一列,我想用该列将两个字符串替换为值0和1 这是我的dput(头(数据)): 结构(列表(年龄=c(39L、50L、38L、53L、28L、37L), 工资=结构(c(1L,1L,1L,1L,1L,1L,1L),.Label=c(“50K”),class=“factor”),.Names=c(“年龄”,“工资”),row.Names=c(NA, 6L),class=“数据帧”) “薪资”列当前有“50K”,我希望前者替换为0,后者替换为1。这就是我目前正在做的:
dput(头(数据))
:
结构(列表(年龄=c(39L、50L、38L、53L、28L、37L),
工资=结构(c(1L,1L,1L,1L,1L,1L,1L),.Label=c(“50K”),class=“factor”),.Names=c(“年龄”,“工资”),row.Names=c(NA,
6L),class=“数据帧”)
“薪资”列当前有“50K”,我希望前者替换为0,后者替换为1。这就是我目前正在做的:
> transform(data, Salary=c("<=50K"=0, ">50K"=1)[as.character(Salary)])
>转换(数据,薪资=c(“50K”=1)[as.字符(薪资)])
但是,我认为字符串包含数学符号是一个问题。我得到以下错误:
Error: unexpected '<=' in "transform(data, Salary=c(<="
错误:意外“在提供的链接中,最后一列只有两个“唯一”值。将值重新编码为“0,1”的一种方法是将列转换为“factor”,并强制转换为“numeric”(as.numeric
)。这将根据因子的级别给出“1,2”,减去“1”,得到正确的重新编码值,即“0,1”
unique(数据$V15)
#[1] “5万”
数据$V15因为工资是一个与级别相关的因素:
> levels(data$Salary)
[1] " <=50K" " >50K"
>级别(数据$Salary)
[1] “5万”
试试这个:
levels(data$Salary) <- 0:1
级别(数据$Salary)您可以尝试:转换(数据,大小=(大小=“>1”)+0L)
(在没有样本数据的情况下未测试)我无法再现错误。您可能必须使用dput
显示示例数据集。错误消息没有显示@akrun周围的任何“
”。使用此数据集可以完全复制我的问题:其中最后一列为50。我将如何分别将其设为0和1?我希望如此helps@Phibert我的评论基于set.seed(24);正是使用这个数据,我在期末考试中的每个条目都得到NAcolumn@Phibert你能把头(数据)
的dput显示出来并在你的帖子里更新吗?我已经把它添加到我的帖子里了。我只对年龄和薪水感兴趣,所以已经删除了所有其他的columns@Phibert根据您的dput输出,as.numeric(数据$Salary)[1]1
,工资已经是两个级别的一个因素。因此,我不知道为什么您会得到不同的结果。抱歉,我肯定遗漏了一些内容。这也给了我一个错误。对于我在这里缺乏知识,我深表歉意
url <- 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data'
library(RCurl)
x <- getURL(url, ssl.verifypeer=FALSE)
data <- read.csv(textConnection(x), stringsAsFactors=FALSE, header=FALSE)
> levels(data$Salary)
[1] " <=50K" " >50K"
levels(data$Salary) <- 0:1