[r] data.frame의 두 열 사이에 열 추가 (삽입)

a, b 및 c 열이있는 데이터 프레임이 있습니다. b와 c 사이에 새 열 d를 추가하고 싶습니다.

cbind 를 사용하여 끝에 d를 추가 할 수 있다는 것을 알고 있지만 두 열 사이에 어떻게 삽입 할 수 있습니까?



답변

난 당신이 기능을 사용하는 것이 좋습니다 것입니다 add_column()으로부터 tibble패키지로 제공된다.

library(tibble)
dataset <- data.frame(a = 1:5, b = 2:6, c=3:7)
add_column(dataset, d = 4:8, .after = 2)

열 인덱스 대신 열 이름을 사용할 수 있습니다.

add_column(dataset, d = 4:8, .after = "b")

또는 더 편리한 경우 .before대신 인수 를 사용하십시오 .after.

add_column(dataset, d = 4:8, .before = "c")


답변

새 열에 추가하십시오.

df$d <- list/data

그런 다음 다시 정렬 할 수 있습니다.

df <- df[, c("a", "b", "d", "c")]


답변

[를 사용하여 열을 재정렬하거나 원하는 순서로 열을 표시 할 수 있습니다.

d <- data.frame(a=1:4, b=5:8, c=9:12)
target <- which(names(d) == 'b')[1]
cbind(d[,1:target,drop=F], data.frame(d=12:15), d[,(target+1):length(d),drop=F])

  a b  d  c
1 1 5 12  9
2 2 6 13 10
3 3 7 14 11
4 4 8 15 12


답변

c항상 바로 다음에 오는 것으로 가정하면 b이 코드는 data.frame의 b위치 b에 관계없이 뒤에 열을 추가합니다 .

> test <- data.frame(a=1,b=1,c=1)
> test
  a b c
1 1 1 1

> bspot <- which(names(test)=="b")

> data.frame(test[1:bspot],d=2,test[(bspot+1):ncol(test)])
  a b d c
1 1 1 2 1

또는 더 자연스럽게 :

data.frame(append(test, list(d=2), after=match("b", names(test))))


답변

예제 data.frame을 만들고 여기에 열을 추가합니다.

df = data.frame(a = seq(1, 3), b = seq(4,6), c = seq(7,9))
df['d'] <- seq(10,12)
df

  a b c  d
1 1 4 7 10
2 2 5 8 11
3 3 6 9 12

열 인덱스로 재정렬

df[, colnames(df)[c(1:2,4,3)]]

또는 열 이름으로

df[, c('a', 'b', 'd', 'c')]

결과는

  a b  d c
1 1 4 10 7
2 2 5 11 8
3 3 6 12 9


답변

열 x와 y로 정의 된 이전 데이터 프레임 (old.df)에 z 열을 추가하려고합니다.

z = rbinom(1000, 5, 0.25)
old.df <- data.frame(x = c(1:1000), y = rnorm(1:1000))
head(old.df)

new.df라는 새 데이터 프레임을 정의하십시오.

new.df <- data.frame(x = old.df[,1], z, y = old.df[,2])
head(new.df)


답변

다음은 데이터 프레임의 특정 위치에 열을 삽입하는 빠르고 더러운 방법입니다. 내 경우, 나는 원래 데이터 프레임에서 5 열이 : c1, c2, c3, c4, c5나는 새 열을 삽입합니다 c2b사이 c2c3.

1) 먼저 테스트 데이터 프레임을 만듭니다.

> dataset <- data.frame(c1 = 1:5, c2 = 2:6, c3=3:7, c4=4:8, c5=5:9)
> dataset
  c1 c2 c3 c4 c5
1  1  2  3  4  5
2  2  3  4  5  6
3  3  4  5  6  7
4  4  5  6  7  8
5  5  6  7  8  9

2) c2b데이터 프레임 끝에 새 열 을 추가합니다 .

> dataset$c2b <- 10:14
> dataset
  c1 c2 c3 c4 c5 c2b
1  1  2  3  4  5  10
2  2  3  4  5  6  11
3  3  4  5  6  7  12
4  4  5  6  7  8  13
5  5  6  7  8  9  14

3) 컬럼 인덱스를 기반으로 데이터 프레임을 재정렬하십시오. 제 경우 제가 벡터하여 내 데이터 프레임의 열을 어드레싱하여 그 열을 기존의 2와 3 사이에 새로운 열 (6)에 삽입 할 c(1:2, 6, 3:5)동등하다 c(1, 2, 6, 3, 4, 5).

> dataset <- dataset[,c(1:2, 6, 3:5)]
> dataset
  c1 c2 c2b c3 c4 c5
1  1  2  10  3  4  5
2  2  3  11  4  5  6
3  3  4  12  5  6  7
4  4  5  13  6  7  8
5  5  6  14  7  8  9

그곳에!