にstr_split_fixed私は今data.tableを持ってdata.tableR:GSUBとdata.tables
にdata.frameから "変換" しています:
library(data.table)
DT = data.table(ID = c("ab_cd.de","ab_ci.de","fb_cd.de","xy_cd.de"))
DT
ID
1: ab_cd.de
2: ab_ci.de
3: fb_cd.de
4: xy_cd.de
new_DT<- data.table(matrix(ncol = 2))
colnames(new_DT)<- c("test1", "test2")
私が最初にしたいです:すべてのエントリの後で ".de"を削除し、次のステップでアンダースコアですべてのエントリを区切り、2つの新しいカラムに出力を保存します。最終的な出力は次のようになります。data.frameで
test1 test2
1 ab cd
2 ab ci
3 fb cd
4 xy cd
私がやった:
df = data.frame(ID = c("ab_cd.de","ab_ci.de","fb_cd.de","xy_cd.de"))
df
ID
1: ab_cd.de
2: ab_ci.de
3: fb_cd.de
4: xy_cd.de
df[,1] <- gsub(".de", "", df[,1], fixed=FALSE)
df
ID
1: ab_cd
2: ab_ci
3: fb_cd
4: xy_cd
n <- 1
for (i in (1:length(df[,1]))){
new_df[n,] <-str_split_fixed(df[i,1], "_", 2)
n <- n+1
}
new_df
test1 test2
1 ab cd
2 ab ci
3 fb cd
4 xy cd
すべてのヘルプは歓迎です!
最後に[]が必要ですか? – Rivka
'[]'ここでは、結果を出力するためのトリックです。 ':='はそのままでは列を変更しますが、何も返しません。あなたが印刷する必要がなければ、あなたはそれをしません。 – Psidom
私はすべての行を5回繰り返す必要があります。私は '...:= rep(tstrsplit(sub .....)、16)'を試しましたが、これは行ではなく列を追加することです – Rivka