使用列值作为另一列的索引

时间:2018-10-18 17:43:58

标签: r

我想用另一个列的值替换数据框中的列的值。应该使用第三列的值作为索引引用后一列。

df=pd.crosstab(use.ID,use.Date)
df
Out[856]: 
Date  1-1-01  1-2-01  1-3-01
ID                          
1          1       1       1
2          1       0       1
3          1       1       1

例如,应将A列的值替换为同一行的索引C处的列(此处为B列)。无法直接定位B列,因为每一行的位置和名称都不同。

  A B C
1 1 3 2
2 8 5 2

我尝试使用 A B C 1 3 3 2 2 5 5 2 ,但随后他将整个C列用作向量。相反,仅应使用索引==行号处的向量值,但我无法找出解决方案。

2 个答案:

答案 0 :(得分:0)

我们可以使用row/column索引。使用(从“ C”列开始的)列索引创建一个matrix行索引(seq_len(nrow(df))),使用它来提取数据集的值并将其分配给“ A”

m1 <- cbind(seq_len(nrow(df)), df$C)
df$A <- df[m1]
df
#  A B C
#1 3 3 2
#2 5 5 2

数据

df <-  structure(list(A = c(1L, 8L), B = c(3L, 5L), 
  C = c(2L, 2L)), class = "data.frame", row.names = c("1", "2"))

答案 1 :(得分:0)

另一种方法是unlist data.frame,并使用向量名称从所得向量中获取数据的子集:

dat[, "A"] <- unlist(dat)[paste0(colnames(dat)[dat$C], 1:nrow(dat))]

dat

#   A B C
# 1 3 3 2
# 2 5 5 2