Saya memiliki kerangka data:
df <- data.frame(Category = c(rep("A", 3), rep("B", 3)), Value = rnorm(6))
df
Category Value
1 A -0.94968814
2 A 2.56687061
3 A -0.15665153
4 B -0.47647105
5 B 0.83015076
6 B -0.03744522
Sekarang saya ingin menambahkan kolom lain yang merupakan mean per Kategori. Ini dapat dilakukan dengan paket dplyr dengan sangat mudah:
df %>% group_by(Category) %>%
summarize(mean = mean(Value))
Sekarang dalam potongan kode, masalah saya adalah: Saya tidak dapat menggunakan mean(Value)
, tetapi saya memiliki nama variabel yang mengetahui nama kolom: columnName = "Value"
Tapi sayangnya ini tidak berhasil:
columnName = "Value"
df %>% group_by(Category) %>%
summarize(mean = mean(columnName))
Pesan peringatan: 1: In mean.default("Value") : argumen bukan numerik atau logis: mengembalikan NA 2: In mean.default("Value") :
argumen bukan numerik atau logis: mengembalikan NA
Bagaimana saya bisa meneruskan nama kolom dengan variabel?
mean(df[,columnName])
kode ini berfungsi untuk saya, ketika menggunakan variabel yang sama seperti Anda. - person Benjamin Mohn   schedule 21.12.2016dplyr
tetapi berfungsi seperti ini:tapply(df[,columnName],df$Category, mean)
- person Benjamin Mohn   schedule 21.12.2016set.seed
saat menggunakan fungsi sepertirnorm
untuk membuat bingkai data sehingga kami dapat memeriksa ulang hasilnya - person Sotos   schedule 21.12.2016vignette("nse")
. Salah satu cara untuk mencapainya adalahlibrary(lazyeval) ; dots <- interp(~ mean(columnName), columnName = as.name("Value")) ; df %>% group_by(Category) %>% summarise_(.dots = dots)
- person David Arenburg   schedule 21.12.2016