我有一个包含2个数字列的数据集。
示例数据集:
X = c(-1:-20)
Y=c(11:30)
df=as.data.frame(cbind(X,Y))
我的数据集如下:
X Y
1 -1 11
2 -2 12
3 -3 13
4 -4 14
5 -5 15
6 -6 16
7 -7 17
8 -8 18
9 -9 19
10 -10 20
11 -11 21
12 -12 22
13 -13 23
14 -14 24
15 -15 25
16 -16 26
17 -17 27
18 -18 28
19 -19 29
20 -20 30
我正在使用一个循环,允许我将100减去-10以下的值。
for (i in 1:length(df[,1]))
{
if ((df$X[i]< c(-10.0)) == T)
{df$X[i] = df$X[i] - 100}else
{}
}
我的“真实”数据集包含300 000行,循环非常耗时。这就是为什么我一直试图找到一个能完成这项任务的应用函数。
library(plyr)
TAB1=ddply(df,.(X),function (x) x[(df$x)< c(-10.0)]-100)
但它根本不起作用。
感谢您的帮助。
答案 0 :(得分:2)
请勿使用ddply
执行此任务。你不需要它。操作是矢量化的
index <- df$X < -10
df$X[index] <- df$X[index] - 100