我需要決議一個由檔案夾名稱創建的列。一些檔案夾有許多子檔案夾,導致名稱中的"/"數量不定。我怎樣才能在"/"上進行分離,并最終得到許多列,如果沒有子檔案夾,其中一些列將有 "NA"?
Reprex:
df <- data. frame(group = c("a"/span>。 "b", "c")。 var1 = c(3, 1, 2),
id = c("C:/Users/me/big_folder/little_folder/plot/783/abc/551/statistics。 csv",
"C:/Users/me/big_folder/little_folder/plot/rep/634/efg/552/statistics.csv",
"C:/Users/me/big_folder/228/hij/553/statistics.csv"))
separate(df, id, sep = "/"。 進入= c(a, b。 c, d, e, f。 g, h, i, j))
uj5u.com熱心網友回復:
根據? separate
into - 作為字符向量創建的新變數的名稱。使用NA來省略輸出中的變數。
OP的當前代碼使用了不帶引號的into。 要么使用內置的矢量letters
library(tidyr)
separate(df, "id"。 sep = "/"/span>。 進入= letters[1。 10])
或者使用
separate(df, "id"。 sep = "/", into =
c("a",/span> "b"。 "c", "d", "e"。 "f", "g", "h"。 "i", "j"))
輸出
group var1 a b c d e f g h i j
1 a 3 C: Users me big_folder little_folder plot 783 abc 551 statistics.csv
2 b 1 C: Users me big_folder little_folder plot rep 634 efg 552
3 c 2 C。 Users me big_folder 228 hij 553 statistics. csv <NA> <NA> >
uj5u.com熱心網友回復:
如果你正在尋找替代品。
我們可以使用cSplit從splitstackshape包。
這樣做的好處是,我們不必在之前定義結果列:
library(splitstackshape)
cSplit(df, "id"。 "/")
輸出:
group var1 id_01 id_02 id_03 id_04 id_05 id_06 id_07 id_08 id_09 id_10 id_11
1: a 3 C: Users me big_folder little_folder plot 783 abc 551 statistics. csv <NA>
2: b 1 C。 Users me big_folder little_folder plot rep 634 efg 552 statistics。 csv
3: c 2 C。 Users me big_folder 228 hij 553 statistics. csv <NA> < NA> <NA>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306874.html
標籤:
