programing

data.frame에서 data.frame으로 단일 열을 추출하려면 어떻게 해야 합니까?

closeapi 2023. 10. 23. 21:49
반응형

data.frame에서 data.frame으로 단일 열을 추출하려면 어떻게 해야 합니까?

데이터가 있다고 가정합니다.프레임:

df <- data.frame(A=c(10,20,30),B=c(11,22,33), C=c(111,222,333))
  A  B  C
1 10 11 111
2 20 22 222
3 30 33 333

열을 두 개 이상 선택하면 data.frame:

x <- df[,1:2]
   A  B
 1 10 11
 2 20 22
 3 30 33

이것이 제가 원하는 것입니다.그러나 열을 하나만 선택하면 숫자 벡터가 나타납니다.

x <- df[,1]
[1] 1 2 3

둘 이상의 열에 대한 결과를 변경하지 않는 .data.frame()으로 사용하려고 했습니다.한 열의 경우 data.frame을 반환하지만 열 이름은 유지하지 않습니다.

x <- as.data.frame(df[,1])
     df[, 1]
1       1
2       2
3       3

나는 그것이 왜 이렇게 행동하는지 이해할 수 없습니다.제 생각에는 열을 하나 두 개 또는 열 개 추출해도 차이가 없을 것 같습니다.IT는 항상 벡터(또는 행렬)를 반환하거나 항상 data.frame(정확한 이름)을 반환해야 합니다.제가 무엇을 빠뜨리고 있나요?감사합니다!

참고: 행렬과 data.frame은 R에서 기본적으로 다른 데이터 유형이며 dplyr와 다르게 작동할 수 있기 때문에 행렬에 대한 질문을 중복한 것이 아닙니다.data.frame에서는 작동하지만 행렬에서는 작동하지 않는 답변이 몇 가지 있습니다.

사용하다drop=FALSE

> x <- df[,1, drop=FALSE]
> x
   A
1 10
2 20
3 30

설명서( 참조)에서 다음을 확인할 수 있습니다.

떨어뜨리면 =TRUE 결과는 가능한 가장 낮은 차원으로 강요됩니다.

생략합니다.,:

x <- df[1]

   A
1 10
2 20
3 30

의 도움말 페이지에서?"[":

[에 의한 인덱싱은 원자 벡터와 유사하며 지정된 요소의 목록을 선택합니다.

데이터 프레임은 목록입니다.열은 해당 요소입니다.

사용할 수도 있습니다.subset:

subset(df, select = 1) # by index
subset(df, select = A) # by name

댓글에 언급된 것처럼 사용할 수도 있습니다.dplyr::select, 그러나 변수 이름을 인용할 필요는 없습니다.

library(dplyr)

# by name
df %>% 
  select(A)

# by index
df %>% 
  select(1)

언급URL : https://stackoverflow.com/questions/21025609/how-do-i-extract-a-single-column-from-a-data-frame-as-a-data-frame

반응형