Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于数值范围替换数据帧多列中的值_R - Fatal编程技术网

R 基于数值范围替换数据帧多列中的值

R 基于数值范围替换数据帧多列中的值,r,R,我有一个多变量值的数据框,我想用一个字符替换所有的数值,该字符将标记一个特定的数值范围。我不想要相等的范围,所以就我所知,cut()不是一个选项 在下面的代码中,如果我生成dataframe,然后运行任意一个或两个替换命令,它们将完全按照我的要求执行。但当我将它们一起运行时,最终的表将填充所有“f”值 #生成测试数据帧 test1我们可以使用cut在指定断点的基础上创建标签。对于多个列,使用lappyfrombase R在列上循环,应用cut并分配回感兴趣的数据集 test[] <- la

我有一个多变量值的数据框,我想用一个字符替换所有的数值,该字符将标记一个特定的数值范围。我不想要相等的范围,所以就我所知,cut()不是一个选项

在下面的代码中,如果我生成dataframe,然后运行任意一个或两个替换命令,它们将完全按照我的要求执行。但当我将它们一起运行时,最终的表将填充所有“f”值

#生成测试数据帧

test1我们可以使用
cut
在指定
断点的基础上创建标签。对于多个列,使用
lappy
from
base R
在列上循环,应用
cut
并分配回感兴趣的数据集

test[] <- lapply(test, function(x) 
     cut(x, breaks = c(-Inf, 10, 25, 50, 100, 500, Inf), labels = letters[1:6]))

test[]这太棒了,谢谢!当我在做这件事的时候,更重要的是为了理解-Inf”和“Inf”元素在break中的含义是什么?@DanM它是指定低于10和高于500的值,放在两个bucket中,仅仅出于好奇,你知道我的原始代码有什么错吗?您的解决方案要优雅得多,但我仍然不明白为什么我的原始语句是单独工作的,而不是作为一个组工作的。@DanM问题是,一旦您将值更改为字符串,列就不再是数字了。您可能需要创建数据集的副本,并对第一个数据执行逻辑操作,同时替换第二个数据。i、 e.
test[test1-Excellent@akrun,感谢您的快速帮助!
test[] <- lapply(test, function(x) 
     cut(x, breaks = c(-Inf, 10, 25, 50, 100, 500, Inf), labels = letters[1:6]))