我有一个data.frame有三列,这里是数据的一部分:
variable lat lon
140 40 120
120 41 120
115 42 120
...
这是不同的车站的降雨量数据。我想将station-ID添加为上述data.frame的第一列,这是一个1 * n数组,其中“n”是站的总数。
答案 0 :(得分:1)
dat <- structure(list(variable = c(140L, 120L, 115L), lat = 40:42, lon = c(120L,
120L, 120L)), .Names = c("variable", "lat", "lon"), class = "data.frame", row.names = c(NA,
-3L))
#> dat
# variable lat lon
#1 140 40 120
#2 120 41 120
#3 115 42 120
如果您的意思是每一行都是一个唯一的工作站,并且您希望ID
按顺序从上到下运行,那么transform
是一个很好的清洁方式:
dat <- transform(dat, ID = 1:nrow(dat))
# equivalently: dat <- transform(dat, ID = seq(length(variable)))
#> dat
# variable lat lon ID
#1 140 40 120 1
#2 120 41 120 2
#3 115 42 120 3
你说你想要ID
作为第一列,所以你必须要这样:
dat <- data.frame(ID = dat[,4], dat[,1:3])
#> dat
# ID variable lat lon
#1 1 140 40 120
#2 2 120 41 120
#3 3 115 42 120
或者只是剪掉中间人......
dat <- data.frame(ID = 1:nrow(dat), dat[,1:3])
# :)
答案 1 :(得分:0)
数据:
df <- read.table(header=T, text="variable lat lon
+ 140 40 120
+ 120 41 120
+ 115 42 120")
创建一个从1到n的向量(站点数)并将其添加到data.frame
df$stationID <- seq(1,length(df[,1]),1)
如果您不需要合并(如果没有重复的电台),那将会有效。