2016-10-17 10 views
0

私はこのデータフレームを持っており、各行(たとえば)には%を計算したいと思います。私は同じデータフレームでこのデータフレームを変換したいですが、%のみです。ただ、この画像のように(データフレーム内の)行/列の%を計算する方法

enter image description here

enter image description here

私はそれをどのように行うことができますか?

データ:

dat <- data.frame(
    county = c("FRANCIA", "GRECIA", "ITALIA"), 
    `310` = c(73, 165, 347), 
    `320` = c(13, 80, 118), 
    `330` = c(10, 57, 94), 
    `340` = c(28, 116, 177), 
    check.names = FALSE 
) 
+0

あなたはこの投稿を閲覧することができます:http://stackoverflow.com/questions/23568142/row-and-column-sums-in-r – JJFord3

+0

'DF/rowSums(df)* 100' – 989

答えて

0

あなたは、具体的%符号が含まれたい場合は、用務員パッケージからadorn_crosstab()を試してください:あなたはnumeric -classような割合を保持したい場合は

library(janitor) 
dat %>% 
    adorn_crosstab(show_n = FALSE, digits = 0) 

    county 310 320 330 340 
1 FRANCIA 59% 10% 8% 23% 
2 GRECIA 39% 19% 14% 28% 
3 ITALIA 47% 16% 13% 24% 

Calculate row-wise proportionsを参照してください。

(免責事項:私は、この関数の作者だ - しかし、私はそれがあなたの希望する結果を取得する最速の方法だと思う)prop.tableを使用して、

+0

助けてくれてありがとう! :) – Marcusson

0

基本パッケージを。まず、データフレームを行列に変換します。その後、cbindを使用して列の国を復元するデータフレームに戻ります。

cbind(Country = dat[, 1], as.data.frame(prop.table(as.matrix(dat[, 2:5]), 1))) 

出力:

Country  310  320  330  340 
1 FRANCIA 0.5887097 0.1048387 0.08064516 0.2258065 
2 GRECIA 0.3947368 0.1913876 0.13636364 0.2775120 
3 ITALIA 0.4714674 0.1603261 0.12771739 0.2404891 
+0

こんにちは@Marcussonあなたの質問を解決した場合は、[それを受け入れる](http://meta.stackexchange.com/q/5234/179419)のチェックマークをクリックしてください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – mpalanco

関連する問題