2017-06-28 14 views
0

は今のところ、私はそうテーブルを持っている:R:値を分けてテーブルの次の行から引き出す方法は?

Time Jack Kate 
1 105~100 88~99 
2 100~107 90~91 
3 101~99 98~91 
(etc) 

は、私は「〜」分離取得し、私は現在の行のジャックとケイトの最初の値を取得し、引くことができるようにそれを作りたいですそれはジャックとケイトの第二の価値の差からです。だから、最初になります(105から88) - (107から91)、その後、(100-90) - (99から91)、など

私が持っている: splt <- strsplit(x, slit="~', fixed=TRUE)

私はtapplyを使用してみました関数が進行するにつれて各行を参照する方法はわかりません。私の知識が不足していることをお詫びしますが、私はこれについてどうやって行くのか、あるいはtapplyが正しい機能であるかどうかはわかりません。

乾杯

+0

データセットに 'dput'を使用して結果を投稿できますか? – bouncyball

答えて

1

あなたはstrsplitで良いスタートを切りました。その後、インデックス演算子 "["は、リストに適用して元の文字列の個々の数値すべてを取得できる関数であるという事実を利用できます。

## Your sample data 
df = read.table(text="Time Jack Kate 
1 105~100 88~99 
2 100~107 90~91 
3 101~99 98~91", 
header=TRUE, 
stringsAsFactors=FALSE) 

Jack1 = as.numeric(sapply(strsplit(df$Jack, "~"), "[", 1)) 
Jack2 = as.numeric(sapply(strsplit(df$Jack, "~"), "[", 2)) 
Kate1 = as.numeric(sapply(strsplit(df$Kate, "~"), "[", 1)) 
Kate2 = as.numeric(sapply(strsplit(df$Kate, "~"), "[", 2)) 
Jack1 
[1] 105 100 101 

これで、必要な違いを計算できます。

(Jack1 - Kate1)[-length(Jack1)] - (Jack2 - Kate2)[-1] 
[1] 1 2 
関連する問題