데이터 프레임의 두 열을 명명된 벡터로 변환
여러 줄로 된 2열로 변환해야 합니다.data.frame이름있는 캐릭터 벡터로. 나의data.frame다음과 같습니다.
dd = data.frame(crit = c("a","b","c","d"),
name = c("Alpha", "Beta", "Caesar", "Doris")
)
제게 정말 필요한 것은
whatiwant = c("a" = "Alpha",
"b" = "Beta",
"c" = "Caesar",
"d" = "Doris")
사용.names함수:
whatyouwant <- as.character(dd$name)
names(whatyouwant) <- dd$crit
as.character꼭 필요한 이유는data.frame그리고.read.table기본 설정을 사용하여 문자를 요인으로 변환합니다.
원라이너를 원하시는 경우:
whatyouwant <- setNames(as.character(dd$name), dd$crit)
이것은 tibble package에서 사용할 수도 있습니다.
tibble::deframe()
첫 번째 열을 이름으로, 두 번째 열을 값으로 변환합니다.
다음은 매우 일반적이고, 쉽고, 깔끔한 방법입니다.
library(dplyr)
iris %>%
pull(Sepal.Length, Species)
첫 번째 인수는 값이고, 두 번째 인수는 이름입니다.
벡터를 만들 수 있습니다.dd$name, 를 사용하여 이름을 추가합니다.names(), 하지만 당신은 한 걸음에 모든 것을 할 수 있습니다.structure():
whatiwant <- structure(as.character(dd$name), names = as.character(dd$crit))
다양성을 위해서 시도해보세요.split그리고.unlist:
unlist(split(as.character(dd$name), dd$crit))
# a b c d
# "Alpha" "Beta" "Caesar" "Doris"
그리고 또.magrittr노출 파이프()%$%를 통해 이에 대한 해결책:
library(magrittr)
dd %$% set_names(as.character(name), crit)
에 비해 사소한 이점tibble::deframe논쟁처럼 정확히 2열 프레임/블레블을 가질 필요가 없다는 것입니다(즉, a를 피합니다).select(value_col, name_col) %>%).
참고하세요.magrittr::set_names대base::setNames교환이 가능합니다.나는 단지 전자가 어울리기 때문에 더 좋습니다."set_(col|row)?names".
언급URL : https://stackoverflow.com/questions/19265172/converting-two-columns-of-a-data-frame-to-a-named-vector
'programing' 카테고리의 다른 글
| C와 C++의 Float와 Double의 크기는 어떻게 됩니까? (0) | 2023.09.11 |
|---|---|
| 구조 객체가 없는 C 포인터 산술 (0) | 2023.09.11 |
| Angular App은 새 배포 후 캐시를 삭제해야 함 (0) | 2023.09.11 |
| mysql의 날짜별 데이터에서 월별 행 수 가져오기 (0) | 2023.09.11 |
| 도커-영구 데이터 MySQL 구성 (0) | 2023.09.11 |