Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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_Categories - Fatal编程技术网

R 基于列数据生成组列

R 基于列数据生成组列,r,categories,R,Categories,我是R的新手,我试图根据列中的数据引入一个组列 data.frame的示例 1 11.3178501 4 9 11.618880 2 10.3969713 20 8 11.047486 8 9.5067421 14 7 10.079806 6 6.6135932 6

我是R的新手,我试图根据列中的数据引入一个组列

data.frame的示例

1           11.3178501            4    9        11.618880
2           10.3969713           20    8        11.047486
8            9.5067421           14    7        10.079806
6            6.6135932            6    6         7.002669
4            5.4157174            2    5         5.566232
17           3.8860793            5    4         4.235564
16           3.8183699           15    3         4.406416
11           1.2574765           18    2         1.885113
15           0.7084411            7    1         1.130990
第一列是由R引入的索引,但我进行了排序,因此顺序不同,我尝试引入一列,该列根据最后一列的值定义每行所属的括号。 因此,如果最后一列值介于
0-5=>1,5-0=>2
等之间,那么我们在
组->1,2,3…
末尾添加一个新列

16           3.8183699           15    3         4.406416    1
11           1.2574765           18    2         1.885113    2
15           0.7084411            7    1         1.130990    2
我尝试了下面的
dataFrame$column4<5
,但这给了我一个布尔值,所以我想我会将它乘以1,然后得到以下结果

0 0 0 0 0 1 1 1 1

我不确定我是否在正确的轨道上

即使给出了您的评论,我仍然建议
cut
。它位于基R中,通常不被认为是一个奇特的函数

df <- structure(list(V1 = c(1L, 2L, 8L, 6L, 4L, 17L, 16L, 11L, 15L), 
    V2 = c(11.3178501, 10.3969713, 9.5067421, 6.6135932, 5.4157174, 
    3.8860793, 3.8183699, 1.2574765, 0.7084411), V3 = c(4L, 20L, 
    14L, 6L, 2L, 5L, 15L, 18L, 7L), V4 = c(9L, 8L, 7L, 6L, 5L, 
    4L, 3L, 2L, 1L), V5 = c(11.61888, 11.047486, 10.079806, 7.002669, 
    5.566232, 4.235564, 4.406416, 1.885113, 1.13099)), .Names = c("V1", 
"V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA, 
-9L))

df$groups <- cut(df$V5, seq(0,15, by=5))

> df
  V1         V2 V3 V4        V5  groups
1  1 11.3178501  4  9 11.618880 (10,15]
2  2 10.3969713 20  8 11.047486 (10,15]
3  8  9.5067421 14  7 10.079806 (10,15]
4  6  6.6135932  6  6  7.002669  (5,10]
5  4  5.4157174  2  5  5.566232  (5,10]
6 17  3.8860793  5  4  4.235564   (0,5]
7 16  3.8183699 15  3  4.406416   (0,5]
8 11  1.2574765 18  2  1.885113   (0,5]
9 15  0.7084411  7  1  1.130990   (0,5]
> 

即使给出您的评论,我仍然建议
cut
。它位于基R中,通常不被认为是一个奇特的函数

df <- structure(list(V1 = c(1L, 2L, 8L, 6L, 4L, 17L, 16L, 11L, 15L), 
    V2 = c(11.3178501, 10.3969713, 9.5067421, 6.6135932, 5.4157174, 
    3.8860793, 3.8183699, 1.2574765, 0.7084411), V3 = c(4L, 20L, 
    14L, 6L, 2L, 5L, 15L, 18L, 7L), V4 = c(9L, 8L, 7L, 6L, 5L, 
    4L, 3L, 2L, 1L), V5 = c(11.61888, 11.047486, 10.079806, 7.002669, 
    5.566232, 4.235564, 4.406416, 1.885113, 1.13099)), .Names = c("V1", 
"V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA, 
-9L))

df$groups <- cut(df$V5, seq(0,15, by=5))

> df
  V1         V2 V3 V4        V5  groups
1  1 11.3178501  4  9 11.618880 (10,15]
2  2 10.3969713 20  8 11.047486 (10,15]
3  8  9.5067421 14  7 10.079806 (10,15]
4  6  6.6135932  6  6  7.002669  (5,10]
5  4  5.4157174  2  5  5.566232  (5,10]
6 17  3.8860793  5  4  4.235564   (0,5]
7 16  3.8183699 15  3  4.406416   (0,5]
8 11  1.2574765 18  2  1.885113   (0,5]
9 15  0.7084411  7  1  1.130990   (0,5]
> 

贾斯汀的回答很好;然而,如果你想自己实现dumber cut,你可以这样做。首先,用你的阈值定义一个向量,比如贾斯汀的答案很好;然而,如果你想自己实现dumber cut,你可以这样做。首先,用阈值定义一个向量,如重新查看
?剪切
。如果你不使用cut,我想学习R而不使用奇特的函数。其他一些可能的方法可能是
findInterval
或使用模运算,但是如果你给出你的箱子的完整规格,这会有所帮助。请看
?cut
。它将为您提供所需的一切。如果不使用cut,我想学习R而不使用奇特的函数,那么还有其他可能的方法是
findInterval
或使用模块化算术,但如果您提供一个完整的箱子规格,这会有所帮助。注意,您可以指定
cut
调用本身中使用的标签。因素是(内部)因素。其他一切实际上都只是一个标签,所以最好在
cut
调用中处理它。(就我个人而言,我通常为此目的创建一个标签向量。)任何将其转换为整数的操作都可以(1)动态处理,或者可以创建一个调用cut并将其转换为适当标签的函数,因此调用此函数而不是
cut
。模块化您的例程,而不是执行多个步骤。我就是这么看的。注意,您可以指定
cut
调用本身中使用的标签。因素是(内部)因素。其他一切实际上都只是一个标签,所以最好在
cut
调用中处理它。(就我个人而言,我通常为此目的创建一个标签向量。)任何将其转换为整数的操作都可以(1)动态处理,或者可以创建一个调用cut并将其转换为适当标签的函数,因此调用此函数而不是
cut
。模块化您的例程,而不是执行多个步骤。我就是这么看的。
rowSums(outer(values,thre,'>'))
ultraDumbCut<-function(v,thre) rowSums(outer(v,thre,'>'))
dumbCut<-function(v,jump=5,thre=seq(0,max(v),by=jump)) rowSums(outer(v,thre,'>'))