给定一个带有时间戳的数据集以及其后的几列数据
data=
hour V1 V2 V3
1 2012-01-19 08:00:00 0.04551064 0.002851064 0.01842553
2 2012-01-19 09:00:00 -0.05305000 -0.052266667 -0.07455000
3 2012-01-19 10:00:00 -0.07518333 -0.101333333 -0.10670000
4 2012-01-19 11:00:00 -0.09195000 -0.099383333 -0.11176667
5 2012-01-19 12:00:00 -0.07743333 -0.074000000 -0.09106667
6 2012-01-19 13:00:00 -0.10978333 -0.096200000 -0.11343333
我想将V1-V3列给我这个
data_sq=
hour V1 V2 V3
1 2012-01-19 08:00:00 0.002071218 8.128565e-06 0.0003395002
2 2012-01-19 09:00:00 0.002814303 2.731804e-03 0.0055577025
3 2012-01-19 10:00:00 0.005652534 1.026844e-02 0.0113848900
4 2012-01-19 11:00:00 0.008454803 9.877047e-03 0.0124917878
5 2012-01-19 12:00:00 0.005995921 5.476000e-03 0.0082931378
6 2012-01-19 13:00:00 0.012052380 9.254440e-03 0.0128671211
至于我现在只使用
data_sq<-data^2
获得平方根。但是它会破坏时间戳,所以我必须把它放回去,就像
那样非常尴尬data_sqd<-cbind(data_sq,data$hour)
我试过
data_sq<-(data[,c(2:4)]^2
但我也把时间戳丢了
那么如何保持时间戳列的完整性并指定我想要的方格列?我对缺乏可重复的数据表示道歉,但我希望这是一个足够简单的问题,我可以用它来逃避:)
答案 0 :(得分:7)
data_sq <- data # try not to use data, it's a function in base
data_sq[,2:4] <- data[,2:4]^2 # subsetting was off but you were close!
答案 1 :(得分:7)
一步解决方案:
data_sq <- transform(data, V1=V1^2, V2=V2^2, V3=V3^2)
答案 2 :(得分:4)
您只需要替换列2:4,而不是整个对象; e.g:
data_sq[, 2:4] <- data[, 2:4]^2