我是R的新手,我想创建一个动态的data.frame。
请让我解释一下。
我有这张桌子:
PC;COUN;COMMUN;BUILD;HOUSING;PERSON;SEX
01;0101;010101; 001; 01; 001; 1
01;0101;010101; 001; 01; 002; 1
01;0101;010101; 001; 02; 001; 2
01;0101;010101; 001; 03; 001; 1
01;0101;010101; 002; 01; 001; 2
01;0101;010101; 002; 01; 002; 1
01;0101;010101; 002; 02; 001; 1
01;0101;010101; 002; 02; 002; 2
01;0101;010101; 002; 02; 003; 2
01;0102;010102; 001; 01; 001; 1
01;0102;010102; 001; 01; 002; 2
01;0102;010102; 001; 01; 003; 1
01;0102;010102; 002; 01; 001; 2
01;0102;010102; 002; 01; 002; 2
01;0102;010102; 002; 01; 003; 1
01;0102;010102; 003; 01; 001; 1
01;0102;010102; 003; 02; 001; 1
01;0102;010102; 003; 02; 002; 2
01;0102;010102; 003; 03; 001; 1
01;0102;010102; 003; 03; 002; 2
PC变量是城市代码,COUN是县代码。 COMMUN是PC与COUN的串联,是区ID。 BUILD是建筑物编号,HOUSING表示建筑物内的房屋和PERSON:住在房屋内的人数。所有变量都是字符格式。
我的桌子里有超过20万人和2 000个区。
在Server.RI中有3个输入框来选择我们想要显示数据的区域:输入$ com,输入$ quar(COUN的2个第一个字符),输入$ dis(最后2个字符为COUN)。
我想创建一个主数据框,包括每个区的数据。所以,我用这个命令创建了一个数据框:
dfDistrict <- data.frame(
Districts = c(unique(BI14$COMMUN [BI14$PC == input$com &
stri_sub(BI14$COUN,1,2) == input$quar]))
感谢这个命令,我得到一个数据框,每行显示一个区。数据框的第二个变量是每个区的居民数。
但我不知道该怎么做。也许我必须使用&#34;聚合&#34; ?
你能帮我吗?
非常感谢。
PS:抱歉我的英语不好。
编辑:
以下是我想获得的data.frame(每个区的居民数量),它只是每个区的行数:
Districts Residents_Nb
010101 9
010102 11
当然,之后我会添加许多其他变量。
我试过了,但它不起作用:
dfDistrict <- data.frame(
Districts = group_by(COMMUN))
我也试过了:
dfDistrict <- data.frame(
Districts = aggregate(myTable, by=list(myTable$COMMUN), FUN=mean,
na.rm=TRUE))
我认为&#34;意思是&#34;是错的。
非常感谢。
答案 0 :(得分:0)
就像迈克在评论中所说,dplyr
是要走的路。
您收到所需的数据框:
library(dplyr)
result <- df %>%
group_by(COMMUN) %>%
summarize(total=n())
df
是您的数据框示例。为了使您的data.frame动态地与您的输入相关,您应该继续阅读有光泽的反应元素。在您的情况下,这可能看起来像:
filteredData <- reactive({
data <- filter(
df, df$col1 %in% input$filter1 & df$col2 %in% input$filter2
)
})
返回data
将按照您在过滤器小部件中设置的方式进行过滤(在此示例中为filter1
和filter2
)。注意:将分配给另一个变量时,需要为创建的数据集添加括号。例如:
df <- filteredData()
数据帧df
可以像普通数据一样使用。