[英]how can I create a new data frame using exact rows from the old data frame in R Studio?
[英]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.