Объедините массовый экспорт данных в "R", не добавляя вырезанные и вставленные строки одну за другой.
У меня есть более 40000 наблюдений в наборе данных с более чем 250 переменными компаний и различного количества, включая встречи, участников, представителей, количество представителей и т. Д.
Используя код R, я создал новый набор данных только с четырьмя переменными, чью описательную статистику я хотел бы экспортировать в Excel, которые меня интересуют:
Subset.MergedEx.SO <- mergedex1.SO[, c(10, 72, 73, 120, 121 )]
Номера переменных соответствуют следующим именам столбцов
mergedex1.SO <- c("sn", "earntot", "earnctot", "meeting65",
"meeting55")
"sn" обозначает название компании, остальные - переменные, соответствующие различным измерениям собраний, их продолжительности, количеству докладчиков и т. д.
После этого я создал подмножество наборов данных, соответствующих каждой конкретной компании в наборе данных наблюдений 40000 с пятью переменными вместо исходных 250.
Код выглядит следующим образом:
BroomeStreet <- Subset.MergedEx.SO[ which(Subset.MergedEx.SO$sn=='Broome Street'),]
CompanyA <- Subset.MergedEx.SO[ which(Subset.MergedEx.SO$sn=='Company A'),]
CompanyB <- Subset.MergedEx.SO[ which(Subset.MergedEx.SO$sn=='Company B'),]
CompanyC <- Subset.MergedEx.SO[ which(Subset.MergedEx.SO$sn=='Company C'),]
CompanyBC <- Subset.MergedEx.SO[ which(Subset.MergedEx.SO$sn=='Company BC'),]
CompanyCC <- Subset.MergedEx.SO[ which(Subset.MergedEx.SO$sn=='Company CC'),]
и так далее для более чем 45 компаний. [Позже я буду создавать подмножества с названием компании И ДАТА, охватывающей 1965-1987 гг., Поэтому я задаю весь этот вопрос только для этого единичного случая, когда дата несущественна для участвующих компаний].
Моя задача - извлечь описательную статистику для каждой из переменных, следующих за столбцом "sn". Я ищу среднее, стандартное отклонение, минимальное, максимальное и количество наблюдений для переменной, озаглавленной "earntot"; среднее значение, стандартное отклонение, минимальное, максимальное и количество наблюдений для переменной, озаглавленной "earnctot", и та же описательная статистика для переменных "meeting55" и "meeting65".
Я смог сделать это, используя следующий код вместе с определенной формулой:
EarntotCompanyA <-CompanyA$earntot
EarnctotCompanyA <-CompanyA$earnctot
meet55CompanyA<-CompanyA$meet55
meet65CompanyA <-CompanyA$meet65
CompanyA_ALL_INFORMATION<-cbind(EarntotCompanyA,EarnctotCompanyA,
meet55CompanyA,meet65CompanyA)
library(psych)
info<-describe(CompanyA_ALL_INFORMATION)
n<-info[,2] # vector of total number
mean<-info[,3] # vector of mean
sd<-info[,4] # vector of sd
min<-info[,8] # vector of min
max<-info[,9] # vector of max
#this is ordered by the naming function below
value<-round(c(mean,sd,min,max,n),2)
col.names<-naming(CompanyA_ALL_INFORMATION)
descriptives<-t(as.data.frame(value))
colnames(descriptives)<-col.names
rownames(descriptives)<-"Company A"
library(xlsx)
write.xlsx(descriptives, "descriptives.CompanyA.xlsx")
После этого я получаю в Excel одну строку с ранее необходимой мне информацией.
Затем я выполняю тот же точный шаг, что и выше, за исключением того, что использую другую компанию, чтобы получить еще один отдельный файл, такой как "descriptive.CompanyB.xlsx", "descriptives.CompanyC.xlsx", ....
Я вырезал и вставлял все строки из каждого из более чем 50 открытых окон Excel и объединял их в другое отдельное окно Excel, содержащее всю необходимую информацию.
Пример отдельной строки выглядит так:
average.number.of.EarntotCompanyA average.number.of.EarnctotCompanyA
average.number.of.meet55CompanyA average.number.of.meet65CompanyA standard.deviation.of.EarntotCompanyA standard.deviation.of.EarnctotCompanyA standard.deviation.of.meet55CompanyA standard.deviation.of.meet65CompanyA min.number.of.EarntotCompanyA min.number.of.EarnctotCompanyA min.number.of.meet55CompanyA min.number.of.meet65CompanyA max.number.of.EarntotCompanyA max.number.of.EarnctotCompanyA max.number.of.meet55CompanyA max.number.of.meet65CompanyA total.number.of.EarntotCompanyA total.number.of.EarnctotCompanyA total.number.of.meet55CompanyA total.number.of.meet65CompanyA
Company A 16.58 22.91 1 1.85 15.68 16.81 1.75 2.34 0
0 0 0 84.11 92.11 5 9 176 176 69 229
Как сделать так, чтобы все строки отображались в одном файле, не получая каждую из них по отдельности, не вырезая и вставляя его из каждого отдельного файла Excel, а затем вставляя его в отдельный файл. У меня в фоновом режиме было открыто более 50 файлов Excel с точной информацией, которая мне нужна, но она доступна только по одному за раз.
Ниже приведен воспроизводимый пример данных:
> dput((head(Subset.MergedEx.SO, 120)))
structure(list(sn = structure(c(2L, 2L, 3L, 5L, 2L, 7L, 1L, 9L,
1L, 9L, NA, 9L, 1L, 26L, 11L, 9L, 7L, NA, NA, 7L, 17L, 9L, NA,
21L, 7L, 17L, 7L, 7L, 16L, 7L, 7L, 7L, 7L, 26L, 7L, 6L, 26L,
22L, NA, NA, 11L, 23L, 23L, 26L, NA, 7L, 23L, 1L, NA, 1L, 7L,
11L, 12L, 13L, 9L, NA, 15L, NA, 20L, 15L, NA, 17L, 5L, NA, 22L,
15L, NA, NA, 5L, 8L, 32L, 29L, 23L, 33L, 1L, 23L, 14L, 6L, 7L,
15L, 15L, 29L, NA, 21L, 6L, 35L, 32L, 32L, 7L, 31L, 23L, 23L,
1L, 29L, 34L, 34L, 34L, 17L, 24L, 24L, 24L, 24L, 7L, 16L, 7L,
23L, 23L, 34L, 29L, 15L, NA, 35L, 24L, 27L, 33L, 35L, 10L, 34L,
33L, 34L), .Label = c("Broome Street", "Company A", "Company B",
"Company BC", "Company C", "Company CC", "Company D Clinton",
"Company DD", "Company E", "Company ED BroadCompany", "Company G",
"Company H BroadCompany", "Company I BroadCompany", "Company I Studio",
"Company J", "Company K", "Company L", "Company M", "Company M
BroadCompany",
"Company M HS BroadCompany", "Company MCC BroadCompany", "Company N",
"Company P", "Company Q", "Company Q Company N", "Company Q Company ZZ",
"Company R - Company ZZ", "Company SLab", "Company Z", "Company ZE",
"Company ZED", "Company ZEQ", "Company ZZ", "Company ZZQ", "Company ZZQ
Company N"), class = "factor"), earntot = c(21.85, 20.8, NA, 8.16, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 7.16, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 43.32, NA, 30.48, NA, NA, 34.9, NA, NA, NA,
NA, NA, 25.82, 40.75, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0,
NA, NA, NA, 30, NA, NA, NA, NA, NA, NA, 39.1, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 52.29, 44.32, NA, 7, 38.32, 0, NA, NA,
8.25, NA, NA, NA, NA, NA, 51.12, 39.9, NA, 37.48, 32.74, NA,
NA, NA, 33.4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 30.82,
NA, NA, NA, NA, NA, 5.74, NA, NA, NA, NA, NA, NA, NA, NA, 44.48,
NA), earnctot = c(29.43, 20.8, NA, 8.16, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 7.16, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 49.9, NA, 37.56, NA, NA, 41.98, NA, NA, NA, NA, NA, 37.32,
49, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, NA, NA, NA, 37, NA,
NA, NA, NA, NA, NA, 47.68, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 57.29, 48.48, NA, 7, 45.9, 0, NA, NA, 15.75, NA, NA, NA,
NA, NA, 54.12, 46.65, NA, 45.56, 39.9, NA, NA, NA, 39.98, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 38.4, NA, NA, NA, NA,
NA, 12.9, NA, NA, NA, NA, NA, NA, NA, NA, 52.06, NA), meet55 = c(0L,
0L, NA, NA, NA, NA, 1L, NA, NA, NA, NA, 5L, NA, 0L, NA, 5L, NA,
NA, NA, 0L, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 0L, NA, NA, NA, NA, 5L, NA, NA, NA, NA, 4L, 0L, NA,
NA, NA, 4L, 4L, NA, NA, NA, NA, NA, NA, 0L, NA, NA, NA, NA, 1L,
NA, NA, NA, NA, 1L, NA, NA, 0L, 4L, 0L, NA, NA, 0L, NA, NA, NA,
NA, NA, 4L, 3L, 5L, NA, NA, NA, 1L, NA, 0L, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, 0L, NA, 0L, NA,
NA, NA, NA, NA, NA, NA, NA), meet65 = c(0L, 0L, 5L, 0L, 6L, NA,
0L, 5L, NA, 5L, NA, 6L, NA, 0L, 5L, 2L, NA, NA, NA, 0L, 5L, 5L,
NA, NA, NA, 0L, NA, 1L, 4L, 7L, 5L, 5L, 7L, 0L, 5L, NA, 0L, 1L,
NA, NA, NA, 2L, 0L, 6L, NA, 8L, 2L, 0L, NA, 4L, 0L, 1L, 3L, NA,
NA, NA, NA, NA, 4L, 0L, NA, 5L, 7L, NA, 0L, NA, NA, NA, 5L, 0L,
5L, 4L, 0L, 2L, 0L, 0L, 7L, 0L, NA, 5L, NA, 8L, NA, 0L, 1L, 7L,
0L, 4L, 7L, 0L, 3L, 0L, NA, NA, 7L, 5L, 8L, 5L, 5L, 6L, 5L, 6L,
5L, 2L, 0L, 8L, 7L, 7L, 5L, 0L, NA, 0L, 6L, NA, 8L, 8L, 5L, 7L,
7L, 6L)), .Names = c("sn", "earntot", "earnctot", "meet55", "meet65"
), row.names = c(NA, 120L), class = "data.frame")
1 ответ
Я предлагаю
# install.packages("dplyr") # uncomment and run if you have to
library(dplyr)
Subset.MergedEx.SO %>% group_by(sn) %>%
summarise_each(funs(n(), mean(., na.rm = TRUE), sd(., na.rm = TRUE), min(., na.rm = TRUE), max(., na.rm = TRUE))) %>%
write.csv2(tf <<- tempfile(fileext = ".csv"))
cat(tf) # open that file in excel
Возможно, вам придется настроить write.csv2
(т.е. использовать write.csv
или же write.table
с sep="\t"
) в зависимости от конфигурации Excel/OS.