我有以下数据: 关闭dn mavg up pctB sig
2014-11-21 13:40:00 120462.8 120244.0 120427.2 120610.4 0.5973438 1 2014-11-21 13:45:00 120461.1 120282.7 120414.9 120547.0 0.6747622 0 2014-11-21 13:50:00 120635.2 120267.1 120418.6 120570.2 1.2145544 0 2014-11-21 13:55:00 120545.0 120266.0 120419.2 120572.4 0.9105750 -1 2014-11-21 14:00:00 120495.9 120265.5 120422.2 120578.9 0.7351776 -1 2014-11-21 14:05:00 120507.5 120267.1 120427.6 120588.2 0.7487046 -1
我试图在时间为14:00时将sig列重置为0(上例中的结果将是第5行中sig的值为0而不是-1)。 我查了一下但是找不到如何根据第一列的一部分创建一个条件(这是“数据时间”,我的条件只是时间)。
任何建议都会有所帮助。
谢谢!
答案 0 :(得分:0)
我尝试解释你的问题。这就是您的数据:
close dn mavg up pctb sig
1 11/21/2014 13:40:00 120462.8 120244.0 120427.2 120610.4 0.5973438 1
2 11/21/2014 13:45:00 120461.1 120282.7 120414.9 120547.0 0.6747622 0
3 11/21/2014 13:50:00 120635.2 120267.1 120418.6 120570.2 1.2145544 0
4 11/21/2014 13:55:00 120545.0 120266.0 120419.2 120572.4 0.9105750 -1
5 11/21/2014 14:00:00 120495.9 120265.5 120422.2 120578.9 0.7351776 -1
6 11/21/2014 14:05:00 120507.5 120267.1 120427.6 120588.2 0.7487046 -1
试试这个:
dateTimes <- as.character(index(spread_BB))
time <- ldply(strsplit(dateTimes, ' '))[, 2]
df <- data.frame(time = time, sig = spread_BB$sig)
sig <- with(df, ifelse(time == '14:00:00', 0, sig))
spread_BB$sig <- NULL
spread_BB$sig <- sig
#> spread_BB
# close dn mavg up pctb sig
# 1 11/21/2014 13:40:00 120462.8 120244.0 120427.2 120610.4 0.5973438 1
# 2 11/21/2014 13:45:00 120461.1 120282.7 120414.9 120547.0 0.6747622 0
# 3 11/21/2014 13:50:00 120635.2 120267.1 120418.6 120570.2 1.2145544 0
# 4 11/21/2014 13:55:00 120545.0 120266.0 120419.2 120572.4 0.9105750 -1
# 5 11/21/2014 14:00:00 120495.9 120265.5 120422.2 120578.9 0.7351776 0
# 6 11/21/2014 14:05:00 120507.5 120267.1 120427.6 120588.2 0.7487046 -1