R 查找值在某个范围内的位置
我有一个这样的数据帧R 查找值在某个范围内的位置,r,R,我有一个这样的数据帧 "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10" "X11" "X12" "X13" "X14" "X15" "X16" "X17" "X18" "X19" "X20" "X21" "X22" "X23" "X24" 13062 145 9 2 0 0 0 0 0 0 0
"X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10" "X11" "X12" "X13" "X14" "X15" "X16" "X17" "X18" "X19" "X20" "X21" "X22" "X23" "X24"
13062 145 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
586717 66068 18713 7105 3188 1506 750 460 251 141 81 41 39 14 12 6 1 0 1 0 0 0 0 0
55893 1371 155 43 9 3 3 2 0 2 0 1 0 1 0 1 0 0 0 0 0 0 0 0
63123 2573 266 35 10 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14258 63 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
751302 43884 6109 1280 368 123 36 18 6 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0
45018 1017 89 10 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
182932 6581 941 238 73 43 20 9 6 8 2 1 1 0 0 1 0 1 0 0 0 0 0 0
23741 356 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4391 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20201 546 75 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
48193 943 50 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11284 89 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4819 48 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我正在寻找每一行的平均值
df$mean=apply(df,1,mean)
我想在第1列到第24列的范围内计算出平均值
例如:
如果x值为1,2,3,4,y值为10,20,30,40。如果我要找到对应于x中15的值,我会得到1.5。这里我想找出平均值的位置,它可以给我一个浮点数,指定它位于第1.5列
更新:
样本数据
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 mean
10 20 30 40 50 60 70 80 90 100 55
这里的平均值是5.5。如何计算上表中类似的值
可以假设每行中的值都已排序
dfslight备注:使用rowMeans
查找每行速度/简洁性的平均值“更好”。rowMeans更好。我会记得的。由于我不理解这个问题,你能展示你对所提供数据的期望输出吗?平均值是否在几列之间?我建议先重新排列你的数据。例如,数据帧的名称不仅是名称,而且是您正在使用的数据。了解。
df<-read.table(text="X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24
13062 145 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
586717 66068 18713 7105 3188 1506 750 460 251 141 81 41 39 14 12 6 1 0 1 0 0 0 0 0
55893 1371 155 43 9 3 3 2 0 2 0 1 0 1 0 1 0 0 0 0 0 0 0 0
63123 2573 266 35 10 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14258 63 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
751302 43884 6109 1280 368 123 36 18 6 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0
45018 1017 89 10 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
182932 6581 941 238 73 43 20 9 6 8 2 1 1 0 0 1 0 1 0 0 0 0 0 0
23741 356 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4391 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20201 546 75 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
48193 943 50 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11284 89 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4819 48 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0",header=T)
df$mean<-rowMeans(df)
n<-ncol(x)
apply(df,1,function(x) (max(which(x[n]<x[-n]))+min(which(x[n]>x[-n])))/2)
[1] 1.5 2.5 1.5 1.5 1.5 2.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5
df<-read.table(text="X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24
13062 145 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
586717 66068 18713 7105 3188 1506 750 460 251 141 81 41 39 14 12 6 1 0 1 0 0 0 0 0
55893 1371 155 43 9 3 3 2 0 2 0 1 0 1 0 1 0 0 0 0 0 0 0 0
63123 2573 266 35 10 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14258 63 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
751302 43884 6109 1280 368 123 36 18 6 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0
45018 1017 89 10 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
182932 6581 941 238 73 43 20 9 6 8 2 1 1 0 0 1 0 1 0 0 0 0 0 0
23741 356 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4391 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20201 546 75 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
48193 943 50 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11284 89 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4819 48 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0",header=T)
df$mean<-rowMeans(df)
n<-ncol(x)
apply(df,1,function(x) (max(which(x[n]<x[-n]))+min(which(x[n]>x[-n])))/2)
[1] 1.5 2.5 1.5 1.5 1.5 2.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5