我是 R 的新用户,刚开始使用数据框。 我正在尝试在数据框中创建一个新列(使用下面的代码)。问题是创建的新列包含数值,但代码中使用的所有列都是非数字的
我试过在网上寻找答案,但找不到答案
dataframe$newcol <- ifelse(dataframe$colA == "London", dataframe$colA, dataframe$colB)'
最佳答案
R 将许多字符列默认为因子,这可能有点棘手。
你可以这样看变量的类
sapply( dataframe, class )
或
str( dataframe )
您可以像这样转换多列:
dataframe[ , c("colA" ,"colB") ] <- sapply( dataframe[ , c("colA" ,"colB") ] , as.character )
你可以像这样一次转换一列
dataframe$colA <- as.character( dataframe$colA )
如果您要转换数字列,请这样做
dataframe$colX <- as.numeric( as.character( dataframe$colX ))
您的代码现在应该可以工作了——请注意,我将 == 更改为 %in%
dataframe$newcol <- ifelse(dataframe$colA %in% "London", dataframe$colA, dataframe$colB)
你可以在这里使用 transform 来节省你自己的输入
dataframe <- transform( dataframe , newcol = ifelse( colA %in% "London", colA, colB))
关于r - ifelse 只返回数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55881049/