Добавление пробела между двумя символами в кадре данных в R

У меня есть фрейм данных, где в каждой ячейке находятся 2 строки символов (то есть: "AA", "BC", "CD"), где я пытаюсь поставить пробелы между каждым из двух символов, и где значения NA остаются без изменений. Я не могу понять это. Любая помощь????

Вот пример фрейма данных:

 df <- data.frame(col1=c("AB", "CD", "EF"), col2=c("AA", "BB", "CC"), col3=c("XX", "YY", NA))

И вот как выглядит пример фрейма данных:

   col1 col2 col3
1   AB   AA   XX
2   CD   BB   YY
3   EF   CC <NA>

Вот как я хочу, чтобы мой фрейм данных выглядел так:

   col1  col2  col3
1   A B   A A   X X
2   C D   B B   Y Y
3   E F   C C   <NA>

Заранее спасибо!

4 ответа

Решение

Вот один из способов

df2 <- data.frame(lapply(df, function(x) {
  levels(x) <- gsub("(.)(.)", "\\1 \\2", levels(x))
  return(x)
}))

df2

#   col1 col2 col3
# 1  A B  A A  X X
# 2  C D  B B  Y Y
# 3  E F  C C <NA>

Это, конечно, основывается на предположении, что при создании data.frame df Аргумент stringsAsFactors является TRUE,

Если это так просто, как вы показываете, это подход:

data.frame(lapply(df, function(x){
    ifelse(is.na(x), NA, 
    paste(substring(x, 1, 1), substring(x, 2)))
}))

Если ваши столбцы data.frame являются факторами, вы можете работать на уровнях

as.data.frame(lapply(df, function(x){
 .l <- unlist(lapply(strsplit(levels(x),''), paste, collapse = ' '))
   levels(x) <- .l
 x}))

Если твой data.frame столбцы символьные (stringsAsFactors = FALSE)

as.data.frame(lapply(df, function(x){
  .l <- unlist(lapply(strsplit(x,''), paste, collapse = ' '))
  .l
  }))

Ты пробовал это?

df <- data.frame(col1=c("A B", "C D", "E F"), col2=c("A A", "B B", "C C"), col3=c("X X", "Y Y", NA))

Я пытался, и я получаю то, что вам нужно, Кажется, слишком глупо!

Если вы получаете значения столбца динамически, думаю, вы можете использовать paste соответственно вместе с strsplit

пример

x <- "AB" 
strsplit(x, '')
[[1]]
[1] "A" "B"

Тогда вы можете использовать это и использовать paste надлежащим образом

Другие вопросы по тегам