将字符串列拆分为几列 - 保留空条目
Splitting string column into a few columns - keep the null entries
亲爱的互联网好心人,我需要帮助。我正在尝试将一个字符串列拆分为多个列并保留 null/NA 个条目。
df <- cSplit(df, "question", "_")
此代码当前将它们拆分,但会删除空条目并显示以下预热消息:
Warning messages:
1: In type.convert.default(X[[i]], ...) :
'as.is' should be specified by the caller; using TRUE
df
client_id question
15962 eng_child_pregnancy_standard_focused
15963 null
15964 xho_child_developed_sleep
15965 eng_mother_spacing_other
15966 null
15967 null
当前拆分 df 使用以上代码:
client_id question question_2 question_3 question_4 question_5
15962 eng child pregnancy standard focused
15964 xho child developed sleep NA
15965 eng mother spacing other NA
如何保留空条目以及警告是什么意思?
从 ?cSplit
,我们可以看到函数中有一个 type.convert
参数,它会改变每列结果的类型(即确定该列是否应该是数字,逻辑或字符)。关于 as.is
的警告消息来自 utils::type.convert()
函数,如果 type.convert
设置为 TRUE
.
则使用该函数
因此要避免出现该消息,请使用 type.convert = FALSE
。
library(splitstackshape)
cSplit(df, "question", "_", type.convert = FALSE)
一个 tidyverse 解决方案是
library(tidyverse)
cols <- paste0("question_", 1:5)
df %>% separate(question, sep = "_", into = cols )
给出
# A tibble: 6 x 6
client_id question_1 question_2 question_3 question_4 question_5
<dbl> <chr> <chr> <chr> <chr> <chr>
1 15962 eng child pregnancy standard focused
2 15963 null NA NA NA NA
3 15964 xho child developed sleep NA
4 15965 eng mother spacing other NA
5 15966 null NA NA NA NA
6 15967 null NA NA NA NA
亲爱的互联网好心人,我需要帮助。我正在尝试将一个字符串列拆分为多个列并保留 null/NA 个条目。
df <- cSplit(df, "question", "_")
此代码当前将它们拆分,但会删除空条目并显示以下预热消息:
Warning messages:
1: In type.convert.default(X[[i]], ...) :
'as.is' should be specified by the caller; using TRUE
df
client_id question
15962 eng_child_pregnancy_standard_focused
15963 null
15964 xho_child_developed_sleep
15965 eng_mother_spacing_other
15966 null
15967 null
当前拆分 df 使用以上代码:
client_id question question_2 question_3 question_4 question_5
15962 eng child pregnancy standard focused
15964 xho child developed sleep NA
15965 eng mother spacing other NA
如何保留空条目以及警告是什么意思?
从 ?cSplit
,我们可以看到函数中有一个 type.convert
参数,它会改变每列结果的类型(即确定该列是否应该是数字,逻辑或字符)。关于 as.is
的警告消息来自 utils::type.convert()
函数,如果 type.convert
设置为 TRUE
.
因此要避免出现该消息,请使用 type.convert = FALSE
。
library(splitstackshape)
cSplit(df, "question", "_", type.convert = FALSE)
一个 tidyverse 解决方案是
library(tidyverse)
cols <- paste0("question_", 1:5)
df %>% separate(question, sep = "_", into = cols )
给出
# A tibble: 6 x 6
client_id question_1 question_2 question_3 question_4 question_5
<dbl> <chr> <chr> <chr> <chr> <chr>
1 15962 eng child pregnancy standard focused
2 15963 null NA NA NA NA
3 15964 xho child developed sleep NA
4 15965 eng mother spacing other NA
5 15966 null NA NA NA NA
6 15967 null NA NA NA NA