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
사이 c2
와 c3
.
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
그곳에!
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)