R如何创建动态data.frame?
我是R新手,我想创建一个dynamic data.frame 请让我解释一下 我有这张桌子:R如何创建动态data.frame?,r,dataframe,shiny,R,Dataframe,Shiny,我是R新手,我想创建一个dynamic 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;
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变量是城市代码,CONU是县代码。COMMUN是PC与CONU的连接,是地区ID。BUILD是建筑编号,HOUSING表示建筑内的房屋,PERSON:居住在房屋内的人数。所有变量均为字符格式
我的桌子上有20多万人和2000多个地区
在Server.R中,我有3个输入框来选择要显示数据的地区:输入$com、输入$quar(conu的前两个字符)、输入$dis(conu的最后两个字符)
我想创建一个包含每个地区数据的主数据框。因此,我使用以下命令创建了一个数据框:
dfDistrict <- data.frame(
Districts = c(unique(BI14$COMMUN [BI14$PC == input$com &
stri_sub(BI14$COUN,1,2) == input$quar]))
当然,我会在这之后添加许多其他变量
我试过了,但不起作用:
dfDistrict <- data.frame(
Districts = group_by(COMMUN))
dfDistrict就像迈克在评论中说的那样,dplyr
是一条路要走
通过以下方式接收所需的数据帧:
library(dplyr)
result <- df %>%
group_by(COMMUN) %>%
summarize(total=n())
返回的数据
将按照您在过滤器小部件中设置的方式进行过滤(在本例中为filter1
和filter2
)。注意:当您将创建的数据集分配给另一个变量时,需要将其添加到括号中。例如:
df <- filteredData()
df您忽略了实际提出一个具体问题。但是,您的问题的一般答案是:学会使用dplyr
。这是做这类事情最简单、最直接、最灵活的方法——尽管R至少有六种其他方法。感谢您的回复,但我按照说明尝试了dplyr group_,但它似乎不适用于角色。你知道还有什么可以尝试的吗?非常感谢。你能提供一个所需输出的例子吗?当然,它适用于字符,尽管人们通常会混淆因子级别。把你试过的贴出来。也在这里发布你想要的fexjoo。太好了!它起作用了!非常感谢fexjoo和Mike的帮助。
library(dplyr)
result <- df %>%
group_by(COMMUN) %>%
summarize(total=n())
filteredData <- reactive({
data <- filter(
df, df$col1 %in% input$filter1 & df$col2 %in% input$filter2
)
})
df <- filteredData()