文字列のベクトルがあり、それぞれが ID の csv リストです。各文字列をリストに分割し、ID の長さとセットを 2 つの新しい列としてデータフレームに格納します。次に例を示します。
df = data.frame(ids = c("a,b,c", "d", "e", "", "f,g", "", "h", "i", ""), stringsAsFactors=FALSE)
ids = sapply(df$ids, function (s) unlist(strsplit(as.character(s), ",")))
df$num.ids = sapply(ids, length)
df$ids.vec = sapply(ids, unlist)
これは今のところ良さそうです:
> df
ids num.ids ids.vec
1 a,b,c 3 a, b, c
2 d 1 d
3 e 1 e
4 0
5 f,g 2 f, g
6 0
7 h 1 h
8 i 1 i
9 0
しかし、summary(df) と入力すると、ids.vec の不思議な列が表示されます。さらに重要なことは、要約は要約を計算するのではなく、すべての行をリストすることです (これは、実際のデータセットに適用するときに問題になります)。
> summary(df)
ids num.ids ids.vec.Length ids.vec.Class ids.vec.Mode
Length:9 Min. :0 3 -none- character
Class :character 1st Qu.:0 1 -none- character
Mode :character Median :1 1 -none- character
Mean :1 0 -none- character
3rd Qu.:1 2 -none- character
Max. :3 0 -none- character
1 -none- character
1 -none- character
0 -none- character
私が間違っていることはありますか?
ありがとう!ケビン