我有一個擁有250萬行的數據幀(df)。示例數據幀如下所示:如何在R中抽取某些行而無需一次又一次地運行整個數據
PERMNO <- c(10000,10000,10001,10001,10001,10001, 10002,10002,10002)
TICKER <- c('OMFGA','OMFGA', 'GFGC', 'GFGC', 'GFGC', 'GFGC', 'MBNC', 'MBNC', 'MBNC')
date <- as.Date(c('1986-03-31','1986-04-30','1986-01-31', '1986-01-31', '1986-03-31', '1986-04-30', '1986-04-30','1986-05-30', '1986-05-30'))
df = data.frame(PERMNO, date, TICKER)
在此示例中,有3個獨特的PERMNO。現在我需要提取給定的PERMNO的所有數據,並檢查是否有重複的日期。我的目的是爲特定的PERMNO刪除重複日期的行。這個操作我爲所有獨特的PERMNO做的
我的方法:我使用子集函數來提取特定PERMNO的數據,然後檢查日期中的重複項。但是使用這種方法,我的代碼每次都會運行整個數據(原始數據集中有250萬行),以便爲特定的PERMNO提取數據。有沒有更簡單的方法來做到這一點?由於我擁有22000個獨特的PERMNO,代碼將永久運行在For循環中。
這裏是我使用的代碼:
uniqueperm = unique(df$PERMNO)
lenperm = length(uniqueperm)
data_final = df[FALSE,]
for(i in 1:lenperm){
perm = uniqueperm[i]
df1 = filter(df, PERMNO == perm)
df1 = subset(df1,!duplicated(df1$date))
data_final = rbind(data_final,df1)
df1 = df1[FALSE,]
}
data_final
這不就是'PERMNO'和'date'上的重複,那麼如果你想在每個'PERMNO'子集內的'date'上尋找重複的東西?即'重複(df [c(「PERMNO」,「date」)])'或者我錯過了一些微妙的東西? – thelatemail
你可以添加你的代碼(For循環),所以我們有一些參考? –
如果您發佈了您正在運行的代碼,我會得到您所描述的內容,但它會更容易準確地看到它。 – jamzsabb