謝罪これが明らかな場合は、インデックスが存在する場合や列がない場合に何かを発見しました。しかし、私はどちらもこれのために働くとは思わない。インデックスを持たないリストstrsplitと列を組み合わせてデータフレームを作成する
例のデータ:しかし、それは一意の値を持っていない、私は列Aを参照になりたい
A B C D
n n n NA
n y y NA
y y y NA
n n n NA
t NA t NA
j k j k
k k k k
k k j j
:
df.test=data.frame(A=c("n,n,y,n" ,"t", "j,k,k")
,B=c("n,y,y,n" ,"" , "k,k,k")
,C=c("n,y,y,n,n","t", "j,k,j")
,D=c("" ,"" , "k,k,j")
)
df.test=lapply(df.test, function(x) as.character(x))
str(df.test) # looks similar to my data
List of 4
$ A: chr [1:3] "n,n,y,n" "t" "j,k,k"
$ B: chr [1:3] "n,y,y,n" "" "k,k,k"
$ C: chr [1:3] "n,y,y,n,n" "t" "j,k,j"
$ D: chr [1:3] "" "" "k,k,j"
私の目的は、データフレームです。ただし、各リストから許可される最大値があります(意味があることを望みます)。したがって、Cリスト1の5番目の値を削除する必要があります。つまり、n y y n n -> n y y n
です。 また、欠損値を追加する必要があります(列A
に従って欠落)。 C
の余分な値は他のソフトウェアのバグです(これ以上の影響はありません)。これらの余計な値以外は、互いに対応しています。例えば、tは同じ行になければなりません(存在する場合)。
私がこれまでにやったことは、ベクトルのリストを作ることです。リストの長さが異なるので、それらをまとめることができず、対応しません。
df3=lapply(df.test, function(x) unlist(strsplit(x,',')))
str(df3)
List of 4
$ A: chr [1:8] "n" "n" "y" "n" ...
$ B: chr [1:7] "n" "y" "y" "n" ...
$ C: chr [1:9] "n" "y" "y" "n" ...
$ D: chr [1:3] "k" "k" "j"
ワウ。私はそのようなものを考え出すのは遠いです。サンプルデータと実際のデータを処理しました。私はネストされたループを動作させることができましたが、私はそれを使う必要はありません。どうもありがとう。 – john