R dplyr 中的 null 值

null values in R dplyr

提问人:Vaiva Petrikaite 提问时间:3/2/2022 最后编辑:MaëlVaiva Petrikaite 更新时间:3/3/2022 访问量:892

问:

我有以下问题

df <- df %>% mutate(col1=ifelse(col2>1 ,0,3))

如果我有 ,则结果为 null。我试过了col2 = null

df <- df %>% mutate(col1=ifelse(col2>1 | is.na(col2)==FALSE ,0,3))
df <- df %>% mutate(col1=ifelse(col2>1 | is.null(col2)==FALSE ,0,3))

然而,结果是一样的。如何获得 3 如果?col2 = null

r DPLYR

评论

1赞 zx8754 3/2/2022
尝试与字符串进行比较: ,提供示例数据,这完全取决于您所说的 null 是什么意思。例如,test: vs vs .col2 == "null"is.null(NULL)is.null(null)is.null("null")
1赞 Rui Barradas 3/2/2022
R 区分大小写,你说的是还是?此外,显式比较或没有多大意义,因为要比较的值已经是逻辑值,而不是最好进行测试nullNULLFALSETRUEis.na(col2)==FALSE!is.na(col2)
0赞 MrFlick 3/2/2022
如果您包含一个简单的可重现示例,其中包含可用于测试和验证可能的解决方案的示例输入和所需输出,则更容易为您提供帮助。R 中的 data.frames 列通常不能包含实际的“NULL”值,因此它们首先似乎存在一些奇怪的事情。
1赞 Gregor Thomas 3/2/2022
请分享示例数据。数据框不能真正包含值,因此不清楚您实际拥有什么。(例如,如果你尝试引入 ,则存在错误且未更改)。NULLdf1 = data.frame(x = 1:3)df1$x[1] <- NULLdf1
0赞 Gregor Thomas 3/2/2022
dput()可能是共享示例数据的最佳方式 - 它是可复制/粘贴的,并且包含所有类和结构信息。例如,对于前 5 行。选择一个包含一些“空”值的小型子集,这些值会给您带来麻烦。也请明确所需的结果。你想在什么情况下是什么?dput(df[1:5, ])col1col2NA

答:

0赞 Quinten 3/3/2022 #1

下面是一个示例数据帧:

df <- data.frame(col1 = c(1,2,3,4,5),
                 col2 = I(list(2, NULL, NULL, 5, 2)))
df

带输出:

 col1 col2
    1    2
    2     
    3     
    4    5
    5    2

若要将 col2 中的 NULL 替换为 3,可以使用以下代码:

df <- df %>% replace(.=="NULL", 3)

这导致:

 col1 col2
    1    2
    2    3
    3    3
    4    5
    5    2