首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加插入行i的值j的列

添加插入行i的值j的列
EN

Stack Overflow用户
提问于 2013-06-19 09:12:23
回答 3查看 137关注 0票数 1

我正在尝试使用一个循环来打印与大数据框中某一行(样本)的特定值相对应的列(变量)。例如

c1<-c(1,2,3) c2<-c(4,5,6) c3<-c(7,8,9) data<-as.data.frame(rbind(c1,c2,c3))

代码语言:javascript
复制
    row V1  V2  V3
    r1  1   2   3
    r2  4   5   6
    r3  7   8   9

如果为ri=j (其中j是一个值列表),那么我想将行i的值j插入其中的列添加到数据帧中。例如,如果列表的目标值为

对于r1=2

对于r2=12

对于r3=7

那么结果将是

代码语言:javascript
复制
    row V1  V2  V3   V4  V5
    r1  1   2   3   2   1    
    r2  4   5   6   5   4
    r3  7   8   9   8   7

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-19 12:21:30

假设我们有一个列表,其中每个元素都是您希望为每行匹配的值:

代码语言:javascript
复制
r.values <- list(r1=c(2), r2=c(12), r3=c(7))

和你之前的数据帧一样:

代码语言:javascript
复制
data <- data.frame(c(1,2,3), c(4,5,6), c(7,8,9))

现在,我们希望根据每一行与r.values中的值匹配的位置来构建感兴趣的列索引的向量

代码语言:javascript
复制
indices <- c()
for (i in 1:nrow(data)) {
  indices <- c(indices, which(data[i,] %in% r.values[[i]]))
}
data[,indices]

这将为您提供以下内容:

代码语言:javascript
复制
   V2 V1
c1  2  1
c2  5  4
c3  8  7

可喜的是,它可以扩展为跨行查看多个值,或者完全忽略行:

代码语言:javascript
复制
r.values <- list(c(2,3), NA, r3=c(7,8))

再次运行上面的循环会得到以下结果:

代码语言:javascript
复制
   V2 V3 V1 V2.1
c1  2  3  1    2
c2  5  6  4    5
c3  8  9  7    8
票数 1
EN

Stack Overflow用户

发布于 2013-06-19 09:57:41

假设您有一个行索引向量rows <- c(1,2,3)和一个相应值向量val <- c(2, 12, 7)

我们开始创建一个向量来获取所有应该添加的列:

代码语言:javascript
复制
newcols <- c()

for(i in seq_along(rows))
{
  temp <- which(data[rows[i],]==val[i])

  if(length(temp)==0) temp <- NA

  newcols[i] <- temp
}

现在我们只需添加您的列:

代码语言:javascript
复制
result <- cbind(data, data[, newcols[!is.na(newcols)]])
票数 1
EN

Stack Overflow用户

发布于 2013-06-19 10:14:15

代码语言:javascript
复制
i <- c(1, 2, 3)
j <- c(2, 12, 7)

col.idx <- mapply(match, j, split(data, rownames(data))[i])
# [1]  2 NA  1

data.frame(data, data[i, na.omit(col.idx)])
#    V1 V2 V3 V2.1 V1.1
# c1  1  2  3    2    1
# c2  4  5  6    5    4
# c3  7  8  9    8    7
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17181438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档