簡體   English   中英

將舊數據框中的行放入新數據框中

[英]Putting rows from old data frame into a new data frame

我有我的代碼:

new_df = data.frame()
#G = 0

for (i in 1:nrow(furin_data)){
  frac = furin_data[i,3]/furin_data[i,5]
  #print(frac)

  if (frac > 2 || frac < 0.5) {
    name = furin_data[i,1]
    print(name)

    new_df = furin_data[i,]
    #print(new_df)
    #G = G + 1
  } 
  write.csv(new_df, "C:\\User\\Documents\\MyData.csv", row.names = FALSE)
}

它創建一個新的數據文件,但只寫入最后一行,而不是基於條件的所有行。 我似乎無法弄清楚問題出在哪里。

那是因為您將行分配給它,因此每個分配都會覆蓋前一個分配。 你想要的是向它添加行。

new_df[nrow(new_df)+1,] = furin_data[i,]

另一件事是您創建了沒有任何列的 new_df 數據框,因此在傳輸中沒有分配任何列。 您應該使用與 furin_data 相同的列類型和名稱來定義它,以便可以復制這些列。 將其初始化為空但具有相同結構的簡單方法是:

new_df = furin_data[F,]

但是,在 R 語言中,編寫循環並不是最好的做事方式。 R 是一種向量化語言,這意味着它可以一次對向量執行所有操作,從而使其執行得更快。 因此,將整個代碼轉換為 R 樣式將是:

library(dplyr)

new_df <-
  furin_data %>%
  mutate(frac = .[3] / .[5]) %>%
  subset(frac > 2 | frac < 0.5)

write.csv(new_df, "C:\\User\\Documents\\MyData.csv", row.names = FALSE)

暫無
暫無

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

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