R如何创建动态data.frame?

问题描述 投票:0回答:1

我想创建一个动态数据框。

我有这张桌子:

 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万人和2000个地区。

在Server.R中我有3个输入框来选择分区。我们要显示数据:input$com、input$quar(COUN 的前 2 个字符)、input$dis(COUN 的最后 2 个字符)。

我想创建一个包含每个地区数据的主数据框架。我用这个命令创建了一个数据框:

 dfDistrict <- data.frame(
        Districts = c(unique(BI14$COMMUN [BI14$PC == input$com &
                      stri_sub(BI14$COUN,1,2) == input$quar]))

我得到一个数据框,其中每行显示一个地区。数据框的第二个变量是每个地区的居民人数。

但是,我不知道该怎么做。也许我必须使用“聚合”?

这是我想获取的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))

我认为“卑鄙”是错误的。

r dataframe shiny
1个回答
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
就可以像普通数据框一样使用了。

© www.soinside.com 2019 - 2024. All rights reserved.