Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中,将一个数据集中的变量匹配到if-else组合变量的另一个数据集中_R_Loops_Variables_If Statement_Matching - Fatal编程技术网

在R中,将一个数据集中的变量匹配到if-else组合变量的另一个数据集中

在R中,将一个数据集中的变量匹配到if-else组合变量的另一个数据集中,r,loops,variables,if-statement,matching,R,Loops,Variables,If Statement,Matching,我正在尝试根据另一个数据帧的一些预定义存储箱存储一些(75)连续变量。例如,数据框G具有我想要的所有容器,而数据框测试是连续变量的位置,我需要谨慎处理。例如,变量X3975具有bin截止点.0625和.1,因此我需要编写一个ifelse语句,如下所示: Ifelse((X3975 >=0 & X3975 <=.0625),”0-.0625”, Ifelse((X3975 >=.0625 & X3975 <=.1),”.0625-.1”, Ifelse((X

我正在尝试根据另一个数据帧的一些预定义存储箱存储一些(75)连续变量。例如,数据框G具有我想要的所有容器,而数据框测试是连续变量的位置,我需要谨慎处理。例如,变量X3975具有bin截止点.0625和.1,因此我需要编写一个ifelse语句,如下所示:

Ifelse((X3975 >=0 & X3975 <=.0625),”0-.0625”,
Ifelse((X3975 >=.0625 & X3975 <=.1),”.0625-.1”,
Ifelse((X3975 >= .1 ),”>.1”,
  • .0625 X3975
  • .1 X3975
  • .01 X3976
  • .1 X3976 ...... 总共有75个不同的变量和不同数量的箱子
  • 测试数据帧数据集


    X3001 X3100 X3102。。。。X3999

    您可以尝试
    cut

    lst <- split(G$Bins, G$Variable)
    df2 <- df1
    df2[] <- Map(function(x,y) cut(x, breaks=c(-Inf,y,Inf)), df1, lst[names(df1)])
    
    df2 
    

    lst这太棒了,肯定会让我接近它!!!然而,我在G数据集中的最低值是零,最高值是880000。有没有办法代替从零到880000的中断??我真的很感谢你的帮助!!!你为我节省了很多时间@JoseMelendez您可以将
    -Inf,Inf
    更改为
    0880000
    ,或者可能是
    0-0.0001和880000+0.1
    (未经测试)0到880000的切割不起作用,它给出了一个错误,说断裂不是唯一的,但另一种方法成功了!!!我真的很感激!
    lst <- split(G$Bins, G$Variable)
    df2 <- df1
    df2[] <- Map(function(x,y) cut(x, breaks=c(-Inf,y,Inf)), df1, lst[names(df1)])
    
    df2 
    
    df1 <- structure(list(X3001 = c(14, 14, NA, 10, 3, 5), X3100 = c(23, 
    7, NA, 24, 7, 6), X3102 = c(1, 1, NA, 3, 0, 1), X3104 = c(0, 
    0, NA, 2, 0, 0), X3109 = c(1, 1, NA, 7, 1, 1), X3111 = c(197, 
    71, NA, 90, 177, 88), X3113 = c(37, 48, NA, 86, NA, 52), X3116 = c(197, 
    71, NA, 76, 177, 88), X117 = c(197, NA, NA, NA, NA, NA)),
    .Names = c("X3001", 
    "X3100", "X3102", "X3104", "X3109", "X3111", "X3113", "X3116", 
    "X117"), row.names = c(NA, -6L), class = "data.frame")
    
    G <- structure(list(Bins = c(0, 7, 12, 0, 12, 22, 0, 1, 3, 0, 2, 0, 
    6, 40, 150, 200, 10, 40, 90, 60, 180, 80, 180), Variable = c("X3001", 
    "X3001", "X3001", "X3100", "X3100", "X3100", "X3102", "X3102", 
    "X3102", "X3104", "X3104", "X3109", "X3109", "X3111", "X3111", 
    "X3111", "X3113", "X3113", "X3113", "X3116", "X3116", "X117", 
    "X117")), .Names = c("Bins", "Variable"), row.names = c(NA, -23L
     ), class = "data.frame")