更改列名然后将所有负值转换为 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,并且我推断你的数据是 numeric
或 integer
,我们需要得到正确的 class。一种选择是分别为 numeric
和 integer
列执行此步骤,我们将分别使用 NA_real_
和 NA_integer_
。但是,在这种情况下,.[NA]
会给出与原始列数据相同的 NA
classed。
您好,我正在尝试将所有列名更改为不同的名称,然后将所有包含负值的列向量转换为 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,并且我推断你的数据是 numeric
或 integer
,我们需要得到正确的 class。一种选择是分别为 numeric
和 integer
列执行此步骤,我们将分别使用 NA_real_
和 NA_integer_
。但是,在这种情况下,.[NA]
会给出与原始列数据相同的 NA
classed。