簡體   English   中英

R如何創建動態data.frame?

[英]R how to create dynamic data.frame?

我是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個輸入框來選擇我們要顯示數據的區域:input $ com,input $ quar(COUN的前兩個字符),input $ dis(COUN的后兩個字符)。

我想創建一個包含每個區的數據的主數據框。因此,我使用以下命令創建了一個數據框:

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

借助此命令,我得到了一個數據框,其中每一行都顯示一個區。 數據框的第二個變量是每個區的居民數。

但是我不知道該怎么做。 也許我必須使用“聚合”?

請你幫助我好嗎 ?

非常感謝。

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))

我認為“平均值”是錯誤的。

非常感謝你。

就像Mike在評論中說的那樣, 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將按照您在過濾器小部件中設置的方式進行過濾(在此示例中是filter1filter2 )。 注意:將創建的數據集分配給另一個變量時,需要在其上添加方括號。 例如:

df <- filteredData()

數據幀df可以像普通幀一樣使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM