使用ifelse更改R中的列
我想根据模式将ifelse条件应用于以下数据帧。我可以重复做,但我有很多数据 我的代码:使用ifelse更改R中的列,r,if-statement,R,If Statement,我想根据模式将ifelse条件应用于以下数据帧。我可以重复做,但我有很多数据 我的代码: d <- data.frame(x_1 = sample(1:100,10),x_2 = sample(1:100,10), y_1 =sample(1:100,10), y_2 =sample(1:100,10), y_3 =sample(1:100,10), y_4 =sample(1:100,10)) ifelse(d$x_1>d$y_1, 0, d$x
d <- data.frame(x_1 = sample(1:100,10),x_2 = sample(1:100,10), y_1 =sample(1:100,10), y_2 =sample(1:100,10),
y_3 =sample(1:100,10), y_4 =sample(1:100,10))
ifelse(d$x_1>d$y_1, 0, d$x_1-d$y_1)
ifelse(d$x_2>d$y_2, 0, d$x_2-d$y_2)
ifelse(d$x_1>d$y_3, 0, d$x_1-d$y_3)
ifelse(d$x_2>d$y_4, 0, d$x_2-d$y_4) # x_1>y_5..., x_2>y_6,...
My x_.* are days of the week so I have x_1...x_7. But my y_.* are many. Code should work as follows:
x_1-y_1
x_2-y_2
x_3-y_3
x_4-y_4
x_5-y_5
x_6-y_6
x_7-y_7
x_1-y_8
x_2-y_9
.
.
.
如果要将每个
x.*
列与每个y.*
列进行比较,可以使用outer
首先找出“x”
和“y”
列
x_col <- grep('x', names(d), value = TRUE)
y_col <- grep('y', names(d), value = TRUE)
mapply(function(x, y) pmin(0, x - y), d[inds], d[y_col])
我们可以使用mapply
减去列
x_col <- grep('x', names(d), value = TRUE)
y_col <- grep('y', names(d), value = TRUE)
mapply(function(x, y) pmin(0, x - y), d[inds], d[y_col])
如果要将每个
x.*
列与每个y.*
列进行比较,可以使用outer
首先找出“x”
和“y”
列
x_col <- grep('x', names(d), value = TRUE)
y_col <- grep('y', names(d), value = TRUE)
mapply(function(x, y) pmin(0, x - y), d[inds], d[y_col])
我们可以使用mapply
减去列
x_col <- grep('x', names(d), value = TRUE)
y_col <- grep('y', names(d), value = TRUE)
mapply(function(x, y) pmin(0, x - y), d[inds], d[y_col])
你想对结果做什么?当前您正在将其打印到控制台。是否要将每个
x.*
列与每个y.*
列进行比较?您应该检查:查看此处:我在编辑中添加了解释。您想对结果做什么?当前您正在将其打印到控制台。是否要将每个x.*
列与每个y.*
列进行比较?您应该检查:查看此处:我在编辑中添加了解释。我不想将每个x.*.*列与每个y.*,但根据我在编辑中添加的模式,我不想将每个x.*列与每个y.*列进行比较,而是根据我在编辑中添加的模式进行比较。