我有一个巨大的数据集,我使用pivot_wideer函数进行了转换。这导致了很多包含NULL的值。现在我想将这些值转换为NA,但我的方法似乎都不起作用:df %>% replace(.=="NULL", NA)df[df==0] <- NA此外,当使用pivot_wideer函数时,values_fill = NA参数也不会产生任何NA。先谢谢你的帮助。
df %>% replace(.=="NULL", NA)
df[df==0] <- NA
jecbmhm31#
我认为你有这样的数据-
df <- data.frame(a1 = c(1, 1, 1, 1,2), a2 = 1:5, a3 = c('a', 'b', 'c', 'a', 'b')) df # a1 a2 a3 #1 1 1 a #2 1 2 b #3 1 3 c #4 1 4 a #5 2 5 b
然后使用pivot_wider,它返回
pivot_wider
df1 <- tidyr::pivot_wider(df, names_from = a3, values_from = a2) # a1 a b c # <dbl> <list> <list> <list> #1 1 <dbl [2]> <dbl [1]> <dbl [1]> #2 2 <NULL> <dbl [1]> <NULL>
这也会返回警告消息-警告信息:值不是唯一标识的;输出将包含列表列。
values_fn = list
values_fn = length
values_fn = {summary_fun}
要回答有关将这些NULL值替换为NA的问题,您可以执行以下操作-
NULL
NA
df1 <- df1 %>% mutate(across(a:c, ~replace(., lengths(.) == 0, NA))) df1 # a1 a b c # <dbl> <list> <list> <list> #1 1 <dbl [2]> <dbl [1]> <dbl [1]> #2 2 <lgl [1]> <dbl [1]> <lgl [1]>
但是,如果pivot_wider issue "Values in values_from are not uniquely identified; output will contain list-cols"对您的数据来说是更好的选择,您不应该忽略这些警告并选中它。
values_from
c0vxltue2#
如果要将 Dataframe 中的所有NULL值替换为NA,可以执行以下操作-
df1 <- df1 %>% mutate_all( ~replace(., lengths(.)==0, NA))
如果要将所有NULL值替换为0,请在代码中将NA更改为0。
0
2条答案
按热度按时间jecbmhm31#
我认为你有这样的数据-
然后使用
pivot_wider
,它返回这也会返回警告消息-
警告信息:值不是唯一标识的;输出将包含列表列。
values_fn = list
可取消显示此警告。values_fn = length
标识出现重复的位置values_fn = {summary_fun}
汇总重复项要回答有关将这些
NULL
值替换为NA
的问题,您可以执行以下操作-但是,如果pivot_wider issue "Values in
values_from
are not uniquely identified; output will contain list-cols"对您的数据来说是更好的选择,您不应该忽略这些警告并选中它。c0vxltue2#
如果要将 Dataframe 中的所有
NULL
值替换为NA
,可以执行以下操作-如果要将所有
NULL
值替换为0
,请在代码中将NA更改为0。