在r中的data.frame中添加一个新列

时间:2013-11-19 19:35:38

标签: r dataframe

我有一个data.frame有三列,这里是数据的一部分:

variable lat lon 
140      40  120
120      41  120
115      42  120
...

这是不同的车站的降雨量数据。我想将station-ID添加为上述data.frame的第一列,这是一个1 * n数组,其中“n”是站的总数。

2 个答案:

答案 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)

如果您不需要合并(如果没有重复的电台),那将会有效。