R 将平均值中的未完成值替换为NA
我想从我的数据中获取每一行的平均值,并找出每一行中的每个值离平均值有多远。如果百分比高于50,则该值应替换为R 将平均值中的未完成值替换为NA,r,R,我想从我的数据中获取每一行的平均值,并找出每一行中的每个值离平均值有多远。如果百分比高于50,则该值应替换为NA 这就是数据: structure(list(Name = structure(c(18L, 19L, 5L, 13L, 14L, 31L ), .Label = c("AMC Javelin", "Cadillac Fleetwood", "Camaro Z28", "Chrysler Imperial", "Datsun 710", "Dodge Challenger", "Du
NA
这就是数据:
structure(list(Name = structure(c(18L, 19L, 5L, 13L, 14L, 31L
), .Label = c("AMC Javelin", "Cadillac Fleetwood", "Camaro Z28",
"Chrysler Imperial", "Datsun 710", "Dodge Challenger", "Duster 360",
"Ferrari Dino", "Fiat 128", "Fiat X1-9", "Ford Pantera L", "Honda Civic",
"Hornet 4 Drive", "Hornet Sportabout", "Lincoln Continental",
"Lotus Europa", "Maserati Bora", "Mazda RX4", "Mazda RX4 Wag",
"Merc 230", "Merc 240D", "Merc 280", "Merc 280C", "Merc 450SE",
"Merc 450SL", "Merc 450SLC", "Pontiac Firebird", "Porsche 914-2",
"Toyota Corolla", "Toyota Corona", "Valiant", "Volvo 142E"), class = "factor"),
mpg_1 = c(125, 133, 143, 141, 134, 238), cyl_1 = c(114, 153,
112, 136, 128, 155), disp_1 = c(113, 143, 144, 131, 431,
331), hp_1 = c(332, 221, 113, 331, 134, 151)), .Names = c("Name",
"mpg_1", "cyl_1", "disp_1", "hp_1"), row.names = c(NA, 6L), class = "data.frame")
这就是期望的输出:
Name mpg_1 cyl_1 disp_1 hp_1
1 Mazda RX4 125 114 113 NA
2 Mazda RX4 Wag 133 153 143 221
3 Datsun 710 143 112 144 113
4 Hornet 4 Drive 141 136 131 NA
5 Hornet Sportabout 134 128 NA 134
6 Valiant 238 155 331 151
还有两个条件
NA
。很难相信使用50%截止值会有两个值,因为平均值会完全改变,但看看第二个条件你知道如何有效地做这件事吗?使用循环看起来是可行的,但也许有更有效的方法?从统计角度来看,正如@Roland在评论中提到的,不建议这样做。但是如果你一定要这么做的话
fun1 <- function(x, n){
t <- which((x - mean(x))/mean(x) > n)[1]
x[t] <- NA
return(x)
}
df1[-1] <- t(apply(df1[-1], 1, fun1, 0.5))
df1
# Name mpg_1 cyl_1 disp_1 hp_1
#1 Mazda RX4 125 114 113 NA
#2 Mazda RX4 Wag 133 153 143 221
#3 Datsun 710 143 112 144 113
#4 Hornet 4 Drive 141 136 131 NA
#5 Hornet Sportabout 134 128 NA 134
#6 Valiant 238 155 NA 151
fun1从统计角度来看,这是一个非常糟糕的想法。但是,您可以通过编写一个函数,对输入向量执行此操作,然后使用apply
@Shaxi-Liver轻松做到这一点。如果您只想更改每行一个值,并且截止阈值可以是可变的,为什么不将与平均值偏差最大的值设置为NA
?值得一提的是,我同意罗兰的观点,从统计学的角度来看,这不是一个好主意。在我的具体情况下,可以使用什么统计方法?你能推荐一些测试吗?问题是复制的数量(4)。我“知道”一些结果在统计学上应该是相关的,但由于一次重复,p值通常高于阈值。首先,我想测试当我从数据中删除这些异常值时,情况是怎样的。如果我能看到我的“期望”,我会尝试找到一种统计方法。如果结果仍然不清楚,我将重复整个实验,这是一年的工作。我只是想补充一点,我已经在不同的论坛上寻求帮助,以找到一种正确的方法来分析我的数据。不幸的是,我没有统计学家的任何支持,我在这个领域的知识也有限。我确实在这个链接下解释了这个问题:@ShaxiLiver如果你不想要你所描述的东西,你想要统计建议,那么就把它发布在Cross Validated上。然而,如果你在这里发布一个关于编程的问题,请确保这正是你想要做的,然后再要求人们花时间回答你的问题。