Saya memiliki kerangka data berikut:

a        <- c(rep("CGR", 6), rep("AUS", 6), rep("ROW", 6) )
b        <- c("AUT", "CH", "ROW", "ROW", "ROW", "ROW", "AUT", "CH", "ROW", "ROW", "ROW", "ROW", "AUT", "CH", "ROW", "ROW", "ROW", "ROW" )
v        <- 1:18
category <- c("a", "b", "a", "a", "b", "b", "a", "b", "a", "a", "b", "b", "a", "b", "a", "a", "b", "b")

data.frame(a,b,v,category)


     a   b  v category
1  CGR AUT  1        a
2  CGR  CH  2        b
3  CGR ROW  3        a
4  CGR ROW  4        a
5  CGR ROW  5        b
6  CGR ROW  6        b
7  AUS AUT  7        a
8  AUS  CH  8        b
9  AUS ROW  9        a
10 AUS ROW 10        a
11 AUS ROW 11        b
12 AUS ROW 12        b
13 ROW AUT 13        a
14 ROW  CH 14        b
15 ROW ROW 15        a
16 ROW ROW 16        a
17 ROW ROW 17        b
18 ROW ROW 18        b

Yang ingin saya lakukan adalah membuat kerangka data baru atau menciutkan kerangka data yang sudah ada di mana saya ingin menjumlahkan nilai dalam 'v' ketika vektor kolom 'b' sama dengan `baris' dengan kategori 'kategori' vektor kolom

Hasil yang diharapkan akan terlihat seperti ini:

 aa  bb vv category
1  CGR AUT  1         a
2  CGR  CH  2         b
3  CGR ROW  7         a
4  CGR ROW 11         b
5  AUS AUT  7         a
6  AUS  CH  8         b
7  AUS ROW 19         a
8  AUS ROW 23         b
9  ROW AUT 13         a
10 ROW  CH 14         b
11 ROW ROW 31         a
12 ROW ROW 35         b

Dapatkah seseorang hanya sesuatu yang efisien untuk melakukan tugas ini ?

0
msh855 12 Desember 2017, 17:35

1 menjawab

Jawaban Terbaik
# example dataset
a        <- c(rep("CGR", 6), rep("AUS", 6), rep("ROW", 6) )
b        <- c("AUT", "CH", "ROW", "ROW", "ROW", "ROW", "AUT", "CH", "ROW", "ROW", "ROW", "ROW", "AUT", "CH", "ROW", "ROW", "ROW", "ROW" )
v        <- 1:18
category <- c("a", "b", "a", "a", "b", "b", "a", "b", "a", "a", "b", "b", "a", "b", "a", "a", "b", "b")

df1 = data.frame(a,b,v,category)

library(dplyr)

df1 %>%
  group_by(a,b,category) %>%
  summarise(vv = sum(v)) %>%
  ungroup()

# # A tibble: 12 x 4
#        a      b category    vv
#   <fctr> <fctr>   <fctr> <int>
# 1    AUS    AUT        a     7
# 2    AUS     CH        b     8
# 3    AUS    ROW        a    19
# 4    AUS    ROW        b    23
# 5    CGR    AUT        a     1
# 6    CGR     CH        b     2
# 7    CGR    ROW        a     7
# 8    CGR    ROW        b    11
# 9    ROW    AUT        a    13
# 10   ROW     CH        b    14
# 11   ROW    ROW        a    31
# 12   ROW    ROW        b    35
6
AntoniosK 12 Desember 2017, 14:44