1

各セルが 2 つの文字列 (つまり、「AA」、「BC」、「CD」) であるデータ フレームがあり、2 つの文字の間にスペースを入れようとしていて、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

4 に答える 4

5

あなたが示すのと同じくらい簡単な場合、これはアプローチです:

data.frame(lapply(df, function(x){
    ifelse(is.na(x), NA, 
    paste(substring(x, 1, 1), substring(x, 2)))
}))
于 2012-10-17T05:48:20.960 に答える
4

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
  }))
于 2012-10-17T05:43:14.823 に答える
3

これが1つの方法です

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>

dfもちろん、これは、data.frameを作成するときに引数stringsAsFactorsがであるという仮定に依存していますTRUE

于 2012-10-17T05:40:49.523 に答える
-2

これを試しましたか?

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適切に使用できます

于 2012-10-17T05:57:56.900 に答える