Я новичок в программировании на R, и это мой первый вопрос в Stackoverflow.
Допустим, у меня есть фрейм данных с 4 столбцами:(1) индивидуальный идентификатор (цифровой);(2) мораль личности (фактор);(3) город (фактор);(4) Количество имеющихся книг (числовое).
Person_ID <- c(1,2,3,4,5,6,7,8,9,10)
Morality <- c("Bad guy","Bad guy","Bad guy","Bad guy","Bad guy",
"Good guy","Good guy","Good guy","Good guy","Good guy")
City <- c("NiceCity", "UglyCity", "NiceCity", "UglyCity", "NiceCity",
"UglyCity", "NiceCity", "UglyCity", "NiceCity", "UglyCity")
Books <- c(0,3,6,9,12,15,18,21,24,27)
mydf <- data.frame(Person_ID, City, Morality, Books)
Я использую этот код для получения подсчета по каждой категории для переменной Morality
в каждом городе:
mycounts<-melt(mydf,
idvars = c("City"),
measure.vars = c("Morality"))%>%
dcast(City~variable+value,
value.var="value",fill=0,fun.aggregate=length)
Код дает такую таблицу с суммами:
names(mycounts)<-gsub("Morality_","",names(mycounts))
mycounts
City Bad guy Good guy
1 NiceCity 3 2
2 UglyCity 2 3
Интересно, существует ли аналогичный способ использования dcast()
для числовых переменных ( внутритот же сценарий ), например, для получения суммы Books
, которой обладают все лица, проживающие в каждом городе:
#> City Bad guy Good guy Books
#>1 NiceCity 3 2 [Total number of books in NiceCity]
#>2 UglyCity 2 3 [Total number of books in UglyCity]