2016-08-18 10 views
0

初心者で新しい変数を作成したいと思いますが、私はこの問題に対する答えを探し出そうとしていませんでしたが、適用するソリューションはありません。それは単純なものかもしれないが、私はそれをハックしないようだ。私はこのデータフレームを持っている私は、余分な変数を使用して新しいデータフレームを作成したいと考え私はユニークな発生とその頻度をR

df <- data.frame(FROM = c("A","A","A","B","D","C","A","D"), 
       TO = c("B","C","D","A","C","A","B","C")) 

は、新しいデータがルックスが設定されていることを、このような「TO」と「FROM」のすべての一意の値を「FREQ」と呼んでこのような。私はいくつかの援助に感謝します。あなたがdplyrパッケージを使用している場合

df2 <- data.frame(FROM = c("A","A","A","B","D","C"), 
        TO = c("B","C","D","A","C","A"), 
        FREQ = c(2,1,1,1,2,1)) 

答えて

1

、あなたはgroup_by(FROM, TO) %>% summarise(n = n())ための近道であるcountを使用し、各グループの行数を数えることができます。

library(dplyr) 
df %>% count(FROM, TO) 

#Source: local data frame [6 x 3] 
#Groups: FROM [?] 

# FROM  TO  n 
# <fctr> <fctr> <int> 
#1  A  B  2 
#2  A  C  1 
#3  A  D  1 
#4  B  A  1 
#5  C  A  1 
#6  D  C  2 
1

我々はdata.tableを使用することができます。 'TO'、 'FROM' でグループ化され、(setDT(df) ')data.table' に 'data.frame' を変換し、我々は各グループ(.N

library(data.table) 
setDT(df)[, .(FREQ = .N) ,.(FROM, TO)] 
# FROM TO FREQ 
#1: A B 2 
#2: A C 1 
#3: A D 1 
#4: B A 1 
#5: D C 2 
#6: C A 1 

別の中の要素の数を取得しますオプションtally()

library(dplyr) 
df %>% 
    group_by(FROM, TO) %>% 
    tally() 
# FROM  TO  n 
# <fctr> <fctr> <int> 
#1  A  B  2 
#2  A  C  1 
#3  A  D  1 
#4  B  A  1 
#5  C  A  1 
#6  D  C  2 

またはbase Rからtableを使用してdplyrから、私達はちょうど01に変換し、データセットの周波数を取得することですとsubsetで 'Freq'の0要素を削除します。

subset(as.data.frame(table(df)), Freq !=0) 
+0

私は忘れてしまった時に、私のコードにサブセットを追加した後にデータセットをサブセット化していなかったことに感謝しました。結果が得られました。しかし、私はそれに複数の方法があります。このコードは私のために働いた。 'df3 < - subset(asdata.frame(df、table(FROM、TO)))、Freq!= 0)' – RLearner

+0

@Rlearnerもし解決策が働くならば、最高の解決策を受け入れることを検討してください。投票の横に目盛りが付いています。 – akrun

+0

**ありがとうございました**コードのために、試用コードのデータのサブセットを忘れました。私のコードにサブセットを追加した後、私は結果を得た。しかし、あなたは私の仕事に複数の方法を与えました。このコードも私のために働いた。 'df3 < - subset(as.data.frame(df、table(FROM、TO)))、Freq!= 0)' – RLearner

関連する問題