code

데이터 프레임의 행을 벡터로 변환

codestyles 2020. 8. 19. 08:05
반응형

데이터 프레임의 행을 벡터로 변환


데이터 프레임의 행에서 벡터를 만들고 싶습니다. 그러나 행 및 열 이름이 필요하지 않습니다. 여러 가지를 시도했지만 운이 없었습니다.

이것은 내 데이터 프레임입니다.

> df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3))
> df
  a b   c
1 1 2 2.6
2 2 6 8.2
3 4 2 7.5
4 2 1 3.0

나는 시도했다 :

> newV <- as.vector(df[1,])
> newV
  a b   c
1 1 2 2.6

그러나 나는 정말로 그렇게 보이는 것을 원합니다.

> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6

어떤 도움이라도 대단히 감사합니다.


데이터 프레임에서 단일 행을 추출하면 한 행 데이터 프레임이 생성됩니다. 숫자 형 벡터로 변환 :

as.numeric(df[1,])

@Roland가 제안했듯이은 unlist(df[1,])이름을 삭제하지 않고 한 행 데이터 프레임을 숫자 형 벡터로 변환합니다. 따라서 unname(unlist(df[1,]))동일한 결과를 얻는 또 다른 약간 더 명시적인 방법이 있습니다.


unlist이름을 유지하는을 권장 합니다.

unlist(df[1,])
  a   b   c 
1.0 2.0 2.6 

is.vector(unlist(df[1,]))
[1] TRUE

명명 된 벡터를 원하지 않는 경우 :

unname(unlist(df[1,]))
[1] 1.0 2.0 2.6

숫자로 변경하지 않으려면 이것을 시도 할 수 있습니다.

> as.vector(t(df)[,1])
[1] 1.0 2.0 2.6

행에 요인이 포함되어 있으면주의해야합니다. 다음은 예입니다.

df_1 = data.frame(V1 = factor(11:15),
                  V2 = 21:25)
df_1[1,] %>% as.numeric() # you expect 11 21 but it returns 
[1] 1 21

다음은 또 다른 예입니다 (기본적으로 data.frame ()은 문자를 요소로 변환합니다)

df_2 = data.frame(V1 = letters[1:5],
                  V2 = 1:5)
df_2[3,] %>% as.numeric() # you expect to obtain c 3 but it returns
[1] 3 3
df_2[3,] %>% as.character() # this won't work neither
[1] "3" "3"

이 동작을 방지하려면 요소를 추출하기 전에주의해야합니다.

df_1$V1 = df_1$V1 %>% as.character() %>% as.numeric()
df_2$V1 = df_2$V1 %>% as.character()
df_1[1,] %>% as.numeric()
[1] 11  21
df_2[3,] %>% as.character()
[1] "c" "3"

다음은 dplyr기반 옵션입니다.

newV = df %>% slice(1) %>% unlist(use.names = FALSE)

# or slightly different:
newV = df %>% slice(1) %>% unlist() %>% unname()

데이터 프레임의 열은 이미 벡터이므로 꺼내기 만하면됩니다. 원하는 열은 쉼표 앞이 아니라 뒤에 배치합니다.

> newV <- df[,1]
> newV
[1] 1 2 4 2

실제로 행을 원하면 Ben이 말한대로 수행하고 나중에 올바르게 단어를 사용하십시오.

참고 URL : https://stackoverflow.com/questions/14484728/convert-a-row-of-a-data-frame-to-vector

반응형