gpt4 book ai didi

r - ifelse 只返回数值

转载 作者:行者123 更新时间:2023-12-02 00:53:43 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com