r - ifelse 只返回数值

标签 r

我是 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/

相关文章:

r - R 中长表达式的简写名称

r - 大型 JSON 列表到整洁的表格

r - 在 r 中使用 max() 函数返回向量中的值及其名称?

r - 将数据框打印到 pdf 文件

r - 如何在 R 中使用 pivot_longer() 按类别将列分成多行?

R Shiny - cex 值不正确 - 上传文本文件,wordcloud 包

r - 确定某项在变量中的出现次数

r - 如何添加 Highchart Bar 线条和标签?

r - 使用 R 中的传单库绘制跨越国际日期变更线的路线

r - 无法为并行集群打开套接字