2017-12-19 11 views
-3

データフレーム(左側)をデータフレーム(右側)に変換するにはどうすればよいですか?データグループ内のr内での区別

enter image description here

私は名前と明瞭にグループ化することにより、dplyr経由でこれを行うにしようとしていますが、それはあなたが望むすべてのセルにアクセスするための簡単な方法があるのみ3行

df %>% 
group_by(name) %>% 
distinct(.,keep.all = T) %>% 
View() 
+1

データから情報を削除したいのはなぜですか?または、画像の右側にデータを表示したいだけですか? – LAP

+0

私はそれを別の目的のためにそのフォーマットで使いたいと思っています。これは、私が望むロジックを表す最小限の例です。正しいデータフレームをCSV形式でダウンロードしたいと思っています – Madhwesh

+1

正確には何を探しているのですか? 結果として完全なデータフレームを取得したという意味で、コードを再現できませんでした。 (group_by呼び出しで名前を使用し、名前ではなく) – kath

答えて

0

を与えます変更する:

data <- data.frame(name = c(rep("A", 5), rep("B", 5), rep("C", 5)), subject = c(rep(1:5, 3)), marks = sample(1:100, 15)) 

> data 
    name subject marks 
1  A  1 31 
2  A  2 12 
3  A  3 29 
4  A  4 67 
5  A  5 99 
6  B  1 77 
7  B  2  3 
8  B  3 92 
9  B  4 69 
10 B  5 42 
11 C  1 52 
12 C  2 66 
13 C  3 98 
14 C  4 23 
15 C  5 72 

duplicated(data$name)は、関連するセルにアクセスします。しかし、Rには、言い換えれば、セルを「空白」のままにする方法がありません。

あなたは彼らにNAを設定、または空characterでそれを埋めることができ、次のいずれか

data$name[duplicated(data$name)] <- NA 

> data 
    name subject marks 
1  A  1 31 
2 <NA>  2 12 
3 <NA>  3 29 
4 <NA>  4 67 
5 <NA>  5 99 
6  B  1 77 
7 <NA>  2  3 
8 <NA>  3 92 
9 <NA>  4 69 
10 <NA>  5 42 
11 C  1 52 
12 <NA>  2 66 
13 <NA>  3 98 
14 <NA>  4 23 
15 <NA>  5 72 

data$name <- as.character(data$name) 
data$name[duplicated(data$name)] <- "" 

> data 
    name subject marks 
1  A  1 30 
2    2 52 
3    3  5 
4    4 48 
5    5 99 
6  B  1 14 
7    2 20 
8    3 34 
9    4 55 
10   5 53 
11 C  1 38 
12   2 27 
13   3 67 
14   4 12 
15   5 77 

factor変数と後者の溶液を使用するには、""を追加する必要があります要因ラベルとして:

data$name <- factor(as.numeric(data$name), 1:4, c(levels(data$name), "")) 
data$name[duplicated(data$name)] <- "" 
+0

これは、私が望むものを達成するための非常に良い方法に見えます。 – Madhwesh

+0

あなたは大歓迎です! – LAP

関連する問題