[英]Remove rows from dataframe that have an infinite value in one column, but not others
[英]Remove rows from a dataframe based on a value in one column
我有一個數據框(從csv文件導入),如下所示
moose loose hoose
2 3 8
1 3 4
5 4 2
10 1 4
R代碼應生成一個均值列,然后我要刪除均值小於4的所有行,從而得到以下結果:
moose loose hoose mean
2 3 8 4.3
1 3 4 2.6
5 4 2 3.6
10 1 4 5
最終應為:
moose loose hoose mean
2 3 8 4.3
10 1 4 5
我如何在R中做到這一點?
dat2 <- subset(transform(dat1, Mean=round(rowMeans(dat1),1)), Mean >=4)
dat2
# moose loose hoose Mean
#1 2 3 8 4.3
#4 10 1 4 5.0
使用data.table
setDT(dat1)[, Mean:=rowMeans(.SD)][Mean>=4]
# moose loose hoose Mean
#1: 2 3 8 4.333333
#2: 10 1 4 5.000000
我假設您的數據稱為d
。 然后,您運行:
d$mean <- rowMeans(d) ## create a new column with the mean of each row
d <- d[d$mean >= 4, ] ## filter the data using this column in the condition
我建議您閱讀有關在data.frame
創建變量和過濾數據的信息。 這些是非常常見的操作,可以在許多情況下使用。
您還可以within
使用,它允許您分配/刪除列,然后返回轉換后的數據。 以df
開頭
> df
# moose loose hoose
#1 2 3 8
#2 1 3 4
#3 5 4 2
#4 10 1 4
> within(d <- df[rowMeans(df) > 4, ], { means <- round(rowMeans(d), 1) })
# moose loose hoose means
#1 2 3 8 4.3
#4 10 1 4 5.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.