本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

如何用R语言在数据中提取指定列数据,并且形成一个新的数据表

r语言 cdadata 14196℃

举个例子,我R中导入了一个较大的行列数据,但是我只需要部分指定列,例如我只需要第1,3,5,7,9,11,13,15,17列(当然我需要的不仅仅这么多),并且将调出来的列数据重新生成一个行列数据表,该怎么写这个for循环,谢谢


不需要for循环呀,一句话搞定:newdata <- olddata[,c(1,3,5,7,9,11,13,15,17)]


我的意思是我要提取很多这样的列,不可能每一列都手动输进去,所以必须得用一个for循环

解答:newdata <- olddata[,icol]

意思是这里面icol是变的?

  1. col.l <- list(1:5, 4:8, c(3,4,5))
  2. newdata <- list()
  3. for (icol in 1:3) {
  4.         newdata[[icol]] <- olddata[,col.l[[icol]]]
  5. }

谢谢,你写的代码好像跟我问的不符合,我的意思很简单,就是从现有数据框z中提取很多列(列是有规律的,符合2+4i,i<-1:262),如何写个for循环提取这样的列,然后再将这样提取出来的列形成一个新的数据框,前面有个兄弟说的这个不行吗?

  1. num<-seq(from=1,to=17,by=2)
  2. data[,num]
  3.        照你的意思,这样行吗?
  4. newdata <- olddata[,2+4*1:262]

我主要想用for循环,下面的方法只能出现最后一列,前面的列都被后面的覆盖了,所以只出现了最走一列

  1. cols <- 2+4*1:262
  2. newdata <- data.frame(matrix(NA, nrow(olddata), length(cols))
  3. for (icol in 1:length(cols)) {
  4.         newdata[,icol] <- olddata[,cols[icol]]
  5. }

转载请注明:数据分析 » 如何用R语言在数据中提取指定列数据,并且形成一个新的数据表

喜欢 (4)or分享 (0)