2016-04-18 19 views
1

私のDFは、次のようになります。Rの複数の列から行を追加するにはどうすればよいですか?

ID V1 V2 V3 
A 100 200  
B 100  
C 300  
D 400  
E 223 233 4 

私はRでそれを変換したい、複数の「V」の列がIDを繰り返すことで、互いの下に来るよう:

最高です何
ID V1 
A 100 
A 200 
B 100 
C 300 
D 400 
E 223 
E 233 
E 4 

RやExcelでこれを行う方法?

+1

「[ワイドフォーマットから高位フォーマットへの(プロット用の)時系列データの再現]」の可能な複製](http://stackoverflow.com/questions/1181060) /作成時系列データ - ワイドフォーマットからプロットフォーマット - ) – zx8754

答えて

2

私たちは、あなたがまたtidyr試すことができmelt

library(data.table) 
setnames(melt(setDT(df), id.var="ID", na.rm=TRUE)[order(ID), -2, with = FALSE], 2, "V1")[] 
# ID V1 
#1: A 100 
#2: A 200 
#3: B 100 
#4: C 300 
#5: D 400 
#6: E 223 
#7: E 233 
#8: E 4 
+1

正確に何を探していたのですか?ありがとう! –

2

を使用することができます:あなたは "新しい" の欄には、このコーディ(ライブラリ "dplyr")を追加したくない場合は

library(tidyr) 
df <- df %>% gather(new, V1, 2:4) %>% filter(!is.na(V1)) 

を:

%>% select(id, V1) 
+1

ギャザーも 'na.rm = TRUE'を持っています – akrun

+0

私はこれをやってみましたが、エラーがありました:フィルタ(。、!is.na(V1))のエラー:オブジェクト 'V1'が見つかりません –

+0

ここでは、チャクラデータに類似した解法があります。[リンク](http://stackoverflow.com/questions/25045301/removing-incomplete-cases-from-output-of-tidyr-gather-r) –

関連する問題