我有一个df(参见下文)我需要根据df中的列创建一个标志.falg应该基于预定义的值。
Year Month Budget percentage_change
2014 Feb $ 2,285,940 61.993
2014 Feb $ 2,294,280 62.219
2014 Feb $ 2,356,192 63.898
2014 Feb $ 2,356,192 63.898
2014 Feb $ 2,359,000 64.000
2014 Feb $ 2,359,255 65.000
2014 Feb $ 2,359,372 70.000
2015 Feb $ 2,465,829 68.905
2015 Feb $ 2,475,187 68.912
2015 Feb $ 2,475,596 68.918
2015 Feb $ 2,480,543 69.472
2015 Feb $ 2,499,953 69.472
2015 Feb $ 2,500,021 69.702
2015 Feb $ 2,503,888 69.787
2015 Feb $ 2,503,888 70.041
我正在寻找的所需输出如下所述
Year Month Budget percentage_change Flag
2014 Feb $ 2,285,940 61.993 0
2014 Feb $ 2,294,280 62.219 0
2014 Feb $ 2,356,192 63.898 0
2014 Feb $ 2,356,192 63.898 0
2014 Feb $ 2,359,000 64.000 0
2014 Feb $ 2,359,255 65.000 0
2014 Feb $ 2,359,372 70.000 1
2015 Feb $ 2,465,829 68.905 0
2015 Feb $ 2,475,187 68.912 0
2015 Feb $ 2,475,596 68.918 0
2015 Feb $ 2,480,543 69.472 0
2015 Feb $ 2,499,953 69.472 0
2015 Feb $ 2,500,021 69.702 0
2015 Feb $ 2,503,888 69.787 0
2015 Feb $ 2,503,888 70.041 1
创建的标志位于百分比变化列值最接近71的值。
我遇到的问题是数据很长,百分比在基于年和月的每个特定因素后都会被重复。
答案 0 :(得分:0)
假设您的数据位于名为data.frame
的{{1}}中。我们需要对组执行此操作,因此我们可以使用mydf
,如下所示:
dplyr
答案 1 :(得分:0)
您可以从预定义值中减去列,取绝对值,然后找到最小值。
这是一个功能,因此可以在多个数据集和多个列上重现:
createFlag <- function(column, value) {
return(ifelse(abs(column-value)==min(abs(column-value), na.rm=T), 1, 0))
}
mydf$Flag <- createFlag(mydf$percentage_change, 71)