更改列名然后将所有负值转换为 NA

Changing column names then converting all negative values to NA

您好,我正在尝试将所有列名更改为不同的名称,然后将所有包含负值的列向量转换为 NA。我做对了第二部分,但由于某种原因,我无法将列名正确更改为不同的名称。这是我的代码;请注意,mscr 是带有我希望更改的列名的 csv;我只是将它重命名为 df2。感谢您的宝贵时间和帮助。

df2 <- mscr %>%
  rename(
    caseid = R0000100,
    children2000 = R6389600
    )

df2 <- mscr
df2[df2 < 0] <- NA

我可能误会了,但我认为您所做的是重命名列(成功),然后用原始数据覆盖新重命名的数据。也就是说,

df2 <- mscr %>% rename(...)

是正确的,然后应该更改名称。然后你做的那一刻

df2 <- msvr

在替换非正值之前,您要还原所做的任何更改。

rename(以及 dplyr 和 R 中的许多“动词”函数)完全以 函数式 方式运行,这意味着输入数据完全不变。如果就地更改,这将是 "side effect",并且与在 R 中做事的“normal/idiomatic 方式”相反。

试试这个:

library(dplyr)
df2 <- mscr %>%
  rename(
    caseid = R0000100,
    children2000 = R6389600
  ) %>% 
  mutate(across(everything(), ~ if_else(. < 0, .[NA], .)))

人们通常想使用 just NA,但由于 NA 在技术上是 logical class,并且我推断你的数据是 numericinteger,我们需要得到正确的 class。一种选择是分别为 numericinteger 列执行此步骤,我们将分别使用 NA_real_NA_integer_。但是,在这种情况下,.[NA] 会给出与原始列数据相同的 NA classed。