r - 根据现有变量的条件,使用 for 循环在 r 中创建新变量

标签 r loops

假设数据框是这样的:

df <- data.frame(x = c(1,7,8,15,24,100,9,19,128))

如何创建满足以下条件的新变量:

y = 1 if 1<=x<=7
y = 2 if 8<=x<=14
y = 3 if 15<=x<=21
...
y = k if 1+7*(k-1)<= x<= 7+7*(k-1)

这样我就可以拥有像这样的新数据框

df <- data.frame(y = c(1,1,2,3,4,15, 2,3, 19))   

我想知道在这种情况下是否可以应用 for 循环。

最佳答案

通过简单的代数,你可以做到:

df$y <- floor((df$x+6)/7)
df
#     x  y
# 1   1  1
# 2   7  1
# 3   8  2
# 4  15  3
# 5  24  4
# 6 100 15
# 7   9  2
# 8  19  3
# 9 128 19

在 R 中,您经常会发现使用向量化运算符比 for 循环更容易(更少的打字和更少的思考)来进行这样的简单计算。在本例中,我们对整个向量执行了对 +/floor 的调用,而不是在每个元素上循环和使用它们。

关于r - 根据现有变量的条件,使用 for 循环在 r 中创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931533/

相关文章:

r - Sweave 用户如何与 Word 用户协作?

java - 在循环之前放入一条语句

php - 使用递归可以解决什么问题?

r - 试图读取 CSV 文件,说 "Error in nchar(x, "宽度") : invalid multibyte string, 元素 1",如何解决这个问题?

r - 无法使用 Haven 读取 R 中的 SAS 传输文件

c++ - 结构错误表达式必须有 bool 类型

Javascript函数未从输入框获取值并循环遍历数组

sql - Offset 和 Fetch Next 可以在循环中使用吗?

r - R 中的向量化函数

r - 如何在生成多个绘图代码时向文件添加标签