반응형
데이터 프레임의 행을 벡터로 변환
데이터 프레임의 행에서 벡터를 만들고 싶습니다. 그러나 행 및 열 이름이 필요하지 않습니다. 여러 가지를 시도했지만 운이 없었습니다.
이것은 내 데이터 프레임입니다.
> 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
반응형
'code' 카테고리의 다른 글
어댑터 데이터 변경시 목록보기 업데이트 (0) | 2020.08.19 |
---|---|
Gradle에서 한 곳에서 공통 종속성을 어떻게 선언합니까? (0) | 2020.08.19 |
ggplot에서 범례 제목 제거 (0) | 2020.08.19 |
CSS calc ()에서 vh 마이너스 픽셀을 사용할 수 있습니까? (0) | 2020.08.19 |
CSV / Excel에 가장 적합한 타임 스탬프 형식? (0) | 2020.08.18 |