-2

Rの初心者として、そのような複数の値を持つ変数を正しく扱う方法:

x = c("1","1","1/2","2","2/3","1/3")

ご覧のとおり、値 3 は他の値と組み合わせてのみ表示されます。

さらに計算するxには、次のような 3 つのベクトルを取得するのが最適です。

X[1] = c(1,1,1,NA,NA,1)

1位、2位、3位、6位に「1」が現れるからです。X[2]と同じX[3]

そうすることで、すべての情報が保存されているように見えます: 私は間違っていますか?

既に strsplit をテストしましたがNA、ベクトルにまだ含まれていない の値を保持していません。

4

2 に答える 2

2

cSplit_e別の方法は、私の「splitstackshape」パッケージから使用することです。

x = c("1","1","1/2","2","2/3","1/3")
library(splitstackshape)
cSplit_e(data.frame(x), "x", "/")
#     x x_1 x_2 x_3
# 1   1   1  NA  NA
# 2   1   1  NA  NA
# 3 1/2   1   1  NA
# 4   2  NA   1  NA
# 5 2/3  NA   1   1
# 6 1/3   1  NA   1

(ここでの結果は、受け入れられた回答の結果と比較して転置されていることに注意してください。)

于 2014-12-23T11:22:40.057 に答える
0

これはうまくいくようです:

x = c("1","1","1/2","2","2/3","1/3")

#Split on your character. This may not be inclusive of all characters that 
#need to be split on.
xsplit <- strsplit(x, "\\/")
#Find the unique items
xunique <- unique(unlist(xsplit))

#Iterate over each xsplit for all unique values
out <- sapply(xsplit, function(z)  
  sapply(xunique, function(zz) zz %in% z)
)
#convert FALSE to NA
out[out == FALSE] <- NA

#Results in
> out
  [,1] [,2] [,3] [,4] [,5] [,6]
1 TRUE TRUE TRUE   NA   NA TRUE
2   NA   NA TRUE TRUE TRUE   NA
3   NA   NA   NA   NA TRUE TRUE
于 2012-09-08T14:13:01.223 に答える