簡體   English   中英

R中的文本到列等效,在字符上拆分數據幀

[英]Text-to-column equivalent in R, splitting dataframe on character

我想知道如何以與excel在“text-to-column”功能中類似的方式拆分列。 stackexchange上有很多關於如何按字符拆分列的教程,但它們沒有解決我需要的3件事:

1)。 使用列,其中只有一些行具有字符2)。 使用包含許多列的數據框3)。 將列視為字符/因子

例如,我有一個數據幀

    df <- data.frame(V1 = c("01, 02", "04", "05, 06", "07, 08", "09", "10"),
         V2 = c("11, 12", "14", "13, 14", 11, 14", "13", "15")

如果我在excel中使用V1中的文本到列,我最終會在逗號上分割3列。 將僅為那些在其中包含逗號的單元格創建第二列。 對於沒有列的行,會有空白單元格。 我也可以選擇將新列視為數字或文本。 在這種情況下,我需要前導零,所以它應該被視為文本。

它看起來像這樣

           V1    V2   V3      
    Row 1   01   02   11,12
    Row 2   04   NA   14

我如何在R中做類似的事情,記住我擁有的數據集有很多列,因此重命名代碼中的每一列是不實際的。

我希望這很清楚。 感謝您的幫助!

可能這有幫助

library(splitstackshape)
cSplit(df, 'V1', sep=", ", type.convert=FALSE)
#       V2 V1_1 V1_2
#1: 11, 12   01   02
#2:     14   04   NA
#3: 13, 14   05   06
#4: 11, 14   07   08
#5:     13   09   NA
#6:     15   10   NA

如果您希望split兩列

cSplit(df, 1:ncol(df), sep=",", stripWhite=TRUE, type.convert=FALSE)
#    V1_1 V1_2 V2_1 V2_2
#1:   01   02   11   12
#2:   04   NA   14   NA
#3:   05   06   13   14
#4:   07   08   11   14
#5:   09   NA   13   NA
#6:   10   NA   15   NA

default值為type.convert= TRUE ,它將轉換為numeric

數據

 df <- data.frame(V1 = c("01, 02", "04", "05, 06", "07, 08", "09", "10"),
      V2 = c("11, 12", "14", "13, 14", "11, 14", "13", "15") )

用strsplit拆分然后用“[”訪問似乎工作。 你真的意識到那些是我希望開始的因素嗎?

spl <-strsplit(as.character(df$V1), ",")
data.frame(V1= sapply(spl, "[", 1), V2 = sapply(spl, "[", 2), df$V2)
  V1   V2  df.V2
1 01   02 11, 12
2 04 <NA>     14
3 05   06 13, 14
4 07   08 11, 14
5 09 <NA>     13
6 10 <NA>     15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM