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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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中创建一个函数来比较行_R - Fatal编程技术网

在R中创建一个函数来比较行

在R中创建一个函数来比较行,r,R,我想在R中创建一个函数来比较“当前行值”和“上一行值”。 a、 如果当前行值低于上一行值,则返回单词LOW b、 如果当前行值高于上一个值,则返回单词HIGH c、 若当前行值和前一行值相同,则返回单词EQUAL 我想创建一个名为Decision的新列,在其中存储单词,如下所示 价值决策 1不适用 2高 1.5低 1.4低 1.4 EQUAL我们可以在时使用case_将“值”与之前的“值”(lag)进行比较,并根据“值”是低还是高创建“决策”列 library(dplyr) df1 %>%

我想在R中创建一个函数来比较“当前行值”和“上一行值”。 a、 如果当前行值低于上一行值,则返回单词LOW b、 如果当前行值高于上一个值,则返回单词HIGH c、 若当前行值和前一行值相同,则返回单词EQUAL

我想创建一个名为Decision的新列,在其中存储单词,如下所示

价值决策

1不适用

2高

1.5低

1.4低


1.4 EQUAL

我们可以在时使用case_将“值”与之前的“值”(
lag
)进行比较,并根据“值”是低还是高创建“决策”列

library(dplyr)
df1 %>%
 mutate(Decision = case_when(Value < lag(Value) ~ "LOW", 
     Value > lag(Value) ~ "HIGH", Value == lag(Value) ~ "EQUAL"))
#  Value Decision
#1   1.0     <NA>
#2   2.0     HIGH
#3   1.5      LOW
#4   1.4      LOW
#5   1.4    EQUAL

或者对循环使用

df1$Decision <- rep(NA_character_, nrow(df1))
for(i in 2: nrow(df1)){
    if(df1$Value[i] > df1$Value[i-1]){
       df1$Decision[i] <- "HIGH"
      } else if(df1$Value[i] < df1$Value[i-1]) {

        df1$Decision[i] <- "LOW"
       } else df1$Decision[i] <- "EQUAL"


   }
df1$Decision df1$Value[i-1]){

df1$Decision[i]我们可以在for循环中使用if-else循环来实现相同的结果吗?@prog101是的,它可以实现我们如何生成整个循环的函数并将参数提供给新函数?
df1$Decision <- rep(NA_character_, nrow(df1))
for(i in 2: nrow(df1)){
    if(df1$Value[i] > df1$Value[i-1]){
       df1$Decision[i] <- "HIGH"
      } else if(df1$Value[i] < df1$Value[i-1]) {

        df1$Decision[i] <- "LOW"
       } else df1$Decision[i] <- "EQUAL"


   }
f1 <- function(dat, colNm, newCol) {
  dat[[newCol]] <- rep(NA_character_, nrow(dat))
    for(i in 2: nrow(dat)){
        if(dat[[colNm]][i] > dat[[colNm]][i-1]){
           dat[[newCol]][i] <- "HIGH"
          } else if(dat[[colNm]][i] < dat[[colNm]][i-1]) {

            dat[[newCol]][i] <- "LOW"
           } else dat[[newCol]][i] <- "EQUAL"


       }
     dat
   }

f1(df1, "Value", "Decision")
df1 <- structure(list(Value = c(1, 2, 1.5, 1.4, 1.4)), class = "data.frame",
     row.names = c(NA, 
-5L))