我正在尝试更正我的数据表,以便我的列具有相同的单位。这是我所拥有的一个例子。
hh:mm A V W kA V kW A kV kW
11:00 13.84 470.16 6509.88 14.89 467.85 6964.38 15.74 464.01 7303.13
11:05 12.54 475.17 5959.22 13.40 474.52 6358.89 13.34 473.13 6311.80
11:10 9.73 476.20 4632.14 10.36 473.38 4905.86 10.38 472.73 4907.14
11:15 9.20 479.30 4410.89 9.65 482.79 4659.67 9.73 479.09 4659.33
11:20 11.28 482.22 5437.78 12.03 484.95 5835.33 12.24 476.36 5829.44
11:25 11.66 481.64 5614.56 12.76 479.95 6124.56 12.88 476.86 6139.33
11:30 10.38 475.13 4934.00 11.99 480.96 5760.44 11.50 478.77 5515.13
如您所见,有些列以“A”、“V”或“W”为单位,而其他列以“kA”、“kV”或“kW”为单位。我要做的是通过将“kA”、“kV”和“kW”列乘以 1000,将所有这些更改为相同的单位。这就是我想要得到的
hh:mm A V W A V W A V W
11:00 13.84 470.16 6509.88 14890 467.85 6964380 15.74 464010 7303130
11:05 12.54 475.17 5959.22 13400 474.52 6358890 13.34 473130 6311800
11:10 9.73 476.20 4632.14 10360 473.38 4905860 10.38 472730 4907140
11:15 9.20 479.30 4410.89 9650 482.79 4659670 9.73 479090 4659330
11:20 11.28 482.22 5437.78 12030 484.95 5835330 12.24 476360 5829440
11:25 11.66 481.64 5614.56 12760 479.95 6124560 12.88 476860 6139330
11:30 10.38 475.13 4934.00 11990 480.96 5760440 11.50 478770 5515130
我试过这样做:
units<-which(names(dt)=="kA") # Gives me a vector with the positions needed.
dt[,units:=units*1000] #Multiplies the vector by 1000
names(dt) <- gsub("kA", "A", names(dt)) # Changes "kA" to "A"
units<-which(names(dt)=="kV") # Gives me a vector with the positions needed.
dt[,units:=units*1000] #Multiplies the vector by 1000
names(dt) <- gsub("kV", "V", names(dt)) # Changes "kV" to "V"
units<-which(names(dt)=="kW") # Gives me a vector with the positions needed.
dt[,units:=units*1000] #Multiplies the vector by 1000
names(dt) <- gsub("kW", "W", names(dt)) # Changes "kW" to "W"
在我的第二行,我收到此错误:
Warning message:
In `[.data.table`(x2, , `:=`(units, units * 1000)) :
Supplied 48 items to be assigned to 286 items of column 'units' (recycled leaving remainder of 46 items).
任何人都可以帮我解决我的语法吗?
PS:这是我输入的 dput,虽然看起来有点搞笑。
> dput(c)
structure(list(`hh:mm` = c("11:00", "11:05", "11:10", "11:15",
"11:20", "11:25", "11:30"), A = c(13.84, 12.54, 9.73, 9.2, 11.28,
11.66, 10.38), V = c(470.16, 475.17, 476.2, 479.3, 482.22, 481.64,
475.13), W = c(6509.88, 5959.22, 4632.14, 4410.89, 5437.78, 5614.56,
4934), kA = c(14.89, 13.4, 10.36, 9.65, 12.03, 12.76, 11.99),
V = c(467.85, 474.52, 473.38, 482.79, 484.95, 479.95, 480.96
), kW = c(6964.38, 6358.89, 4905.86, 4659.67, 5835.33, 6124.56,
5760.44), A = c(15.74, 13.34, 10.38, 9.73, 12.24, 12.88,
11.5), kV = c(464.01, 473.13, 472.73, 479.09, 476.36, 476.86,
478.77), kW = c(7303.13, 6311.8, 4907.14, 4659.33, 5829.44,
6139.33, 5515.13)), .Names = c("hh:mm", "A", "V", "W", "kA",
"V", "kW", "A", "kV", "kW"), row.names = c(NA, -7L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x00000000003b0788>)