我有 4 個資料集,其中包含名為“siteid_public”的相同變數。最終目標是:我想看看這四個資料集中有多少個唯一的“siteid_public”。我將它們加在一起,然后使用長度 (unique()) 來獲取數字。
我使用非常愚蠢的方式來實作這個目標,代碼如下:
site1<-dflist[[1]]%>%
select(siteid_public)
site2<-dflist[[2]]%>%
select(siteid_public)
site3<-dflist[[3]]%>%
select(siteid_public)
site4<-dflist[[4]]%>%
select(siteid_public)
site<-c(site1$siteid_public, site2$siteid_public,site3$siteid_public,site4$siteid_public)
length(unique(site))
但是現在,我想提高它的效率。
因此,首先,我使用此代碼創建一個名為“sitelist”的串列,其中包含來自資料集的 4 個串列。(代碼中的 dflist[[i]] 是我存盤這 4 個資料集的地方。)運行后在下面的代碼中,每個串列都有一個相同的變數,稱為 siteid_public。代碼在這里:
sitelist<-list()
for (i in 1:4){
sitelist[[i]]<-dflist[[i]]%>%
select(siteid_public)
}
現在我想將 sitelist 中的所有 4 個串列添加為一個串列,然后使用 unique 來查看這個組合串列中有多少個唯一的 siteid_public 值。人們可以幫助我繼續此代碼并實作該目標嗎?非常感謝~~!
uj5u.com熱心網友回復:
您可以使用對整個串列或子集(包括一個或零)的框架串列lapply
進行迭代。
您的site1
通過site4
可以創建為串列
sites <- lapply(dflist[1:4], function(z) select(z, siteid_public))
你可以做你的唯一計數
unique(unlist(sites))
這也適用于
sites <- lapply(dflist, ...) # all of it
sites <- lapply(dflist[3], ...) # singleton, note not the `[[` index operator
indices <- ... # integer or logical of indices to include
sites <- lapply(dflist[indices], ...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529885.html
標籤:r
下一篇:從字串中洗掉最后一個字符