R : 노드에서 두 개의 XML 속성을 가장 잘 추출하는 방법은 무엇입니까?

userJT

다음 코드는 XML 파일에서 하나의 속성 (또는 모두)을 추출합니다.

library(xml2);library(magrittr);library(readr);library(tibble);library(knitr)   
fname<-'https://raw.githubusercontent.com/wardblonde/ODM-to-i2b2/master/odm/examples/CDISC_ODM_example_3.xml'
fname
x<-read_xml(fname)
xpath="//d1:ItemDef"
itemsNames <- x %>% xml_find_all(xpath, ns=xml_ns(x)) %>%  xml_attr('Name')
items <- x %>% xml_find_all(xpath, ns=xml_ns(x))

항목은 다음과 같습니다.

<ItemDef OID="IT.ABNORM" Name="Normal/Abnormal/Not Done" DataType="integer" Length="1" ...

샘플 파일은 여기에서 볼 수 있습니다 : https://raw.githubusercontent.com/wardblonde/ODM-to-i2b2/master/odm/examples/CDISC_ODM_example_3.xml

파이프와 xml_attr을 사용하여 NameDataType속성을 모두 추출 하고이를 rbinded 하는 가장 좋은 방법은 무엇 입니까?

이상적으로는 매우 효율적인 파이프 코드 한 줄이 될 것입니다. 이름과 유형을 추출하고 'data.frame (name = names, type = types)'을 가질 수 있지만 가장 좋고 현대적인 것 같지는 않습니다.

결과는 열 이름 및 데이터 유형이 포함 된 티블이어야합니다.

hrbrmstr
library(purrr)

map(items, xml_attrs) %>% 
  map_df(as.list) %>% 
  select(Name, DataType)
## # A tibble: 94 × 2
##                                   Name DataType
##                                  <chr>    <chr>
## 1             Normal/Abnormal/Not Done  integer
## 2          Actions taken re study drug     text
## 3                 Actions taken, other     text
## 4    Stop Day - Enter Two Digits 01-31     text
## 5                    Derived Stop Date     text
## 6  Stop Month - Enter Two Digits 01-12     text
## 7    Stop Year - Enter Four Digit Year     text
## 8                              Outcome     text
## 9           Relationship to study drug     text
## 10                            Severity     text
## # ... with 84 more rows

하나의 "기본"버전 ​​:

lapply(items, xml_attrs) %>% 
  lapply(function(x) as.data.frame(as.list(x))[,c("Name", "DataType")]) %>% 
  do.call(rbind, .) %>%
  tbl_df()

참고 : ^^의 문제는 Name또는 DataType누락 된 경우 SOL이라는 것입니다. 다음을 사용하여이를 완화 할 수 있습니다.

lapply(items, xml_attrs) %>% 
  lapply(function(x) as.data.frame(as.list(x))[,c("Name", "DataType")]) %>% 
  data.table::rbindlist(fill=TRUE) %>% 
  tbl_df()

또는:

lapply(items, xml_attrs) %>% 
  lapply(function(x) as.data.frame(as.list(x))[,c("Name", "DataType")]) %>% 
  bind_rows() %>% 
  tbl_df()

당신이 좋아하지 않는다면 purrr.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XML 노드에 속성을 추가하는 방법은 무엇입니까?

분류에서Dev

XML 노드에 속성을 추가하는 방법은 무엇입니까?

분류에서Dev

xml 노드에 속성을 추가하는 방법은 무엇입니까?

분류에서Dev

두 개체에서 선택한 속성을 비교하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

XQuery에서 두 노드의 가장 낮은 공통 조상을 찾는 방법은 무엇입니까?

분류에서Dev

노드 내에서 메서드를 호출하는 내 노드의 속성 편집기 패널에 버튼을 추가하는 방법은 무엇입니까?

분류에서Dev

Prolog에 두 개의 목록을 추가하는 술어를 호출하는 방법은 무엇입니까?

분류에서Dev

Prolog에 두 개의 목록을 추가하는 술어를 호출하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 XML 노드 추출을 개선하는 방법은 무엇입니까?

분류에서Dev

몇 개의 노드를 건너 뛰어 두 개의 xml을 비교하는 방법은 무엇입니까?

분류에서Dev

Cypress에서 두 개의 데이터 속성 검사를 추가하는 방법은 무엇입니까?

분류에서Dev

공통 속성을 가진 두 노드 간의 관계를 생성하는 방법은 무엇입니까?

분류에서Dev

PHP에서 XML에 속성을 추가하는 방법은 무엇입니까?

분류에서Dev

if 문을 사용하여 r에서 두 개의 변수를 증가시키는 방법은 무엇입니까?

분류에서Dev

속성에 ID 노드를 추가하고 결과 neo4j에서 노드의 몇 가지 속성을 제거하는 방법은 무엇입니까?

분류에서Dev

여러 XML 파일에서 두 노드를 읽는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

PHP에서 XML의 모든 노드와 속성의 이름을 얻는 방법은 무엇입니까?

분류에서Dev

XSLT에서 for : each를 사용하여 두 개의 xml 태그 값을 추가하는 방법은 무엇입니까?

분류에서Dev

기존 값이없는 노드를 버리지 않고 R의 복잡한 XML에서 값을 추출하는 방법은 무엇입니까? 내 for-loop가 매우 느립니다.

분류에서Dev

파이썬을 사용하여 XML 문서의 부모 노드에 중첩 된 자식 노드를 추가하는 방법은 무엇입니까?

분류에서Dev

모델 메서드에서 두 개의 날짜 속성을 결합하는 방법은 무엇입니까?

분류에서Dev

두 개의 버튼에서 단일 입력 상자에 값을 추가하는 방법은 무엇입니까?

분류에서Dev

XDocument에서 루트가 아닌 노드의 xmlns 속성을 제거하는 방법은 무엇입니까?

분류에서Dev

HTML 파일에서 두 개의 특정 필드 값을 출력하는 가장 간단한 방법은 무엇입니까?

분류에서Dev

xml SVG 파일에서 각 요소의 속성을 바꾸고 저장하는 방법은 무엇입니까?

분류에서Dev

Presto에서 두 개의 키 맵을 값 (배열)에 추가하는 방법은 무엇입니까?

분류에서Dev

R에서 독특하고 일치하는 것을 가장 잘 결합하는 방법은 무엇입니까?

분류에서Dev

r 변수의 가장 낮은 두 요소에 대한 정보를 추출하는 방법은 무엇입니까?

분류에서Dev

노드에서 두 개의 입력을 차례로 읽는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    XML 노드에 속성을 추가하는 방법은 무엇입니까?

  2. 2

    XML 노드에 속성을 추가하는 방법은 무엇입니까?

  3. 3

    xml 노드에 속성을 추가하는 방법은 무엇입니까?

  4. 4

    두 개체에서 선택한 속성을 비교하는 가장 좋은 방법은 무엇입니까?

  5. 5

    XQuery에서 두 노드의 가장 낮은 공통 조상을 찾는 방법은 무엇입니까?

  6. 6

    노드 내에서 메서드를 호출하는 내 노드의 속성 편집기 패널에 버튼을 추가하는 방법은 무엇입니까?

  7. 7

    Prolog에 두 개의 목록을 추가하는 술어를 호출하는 방법은 무엇입니까?

  8. 8

    Prolog에 두 개의 목록을 추가하는 술어를 호출하는 방법은 무엇입니까?

  9. 9

    자바 스크립트에서 XML 노드 추출을 개선하는 방법은 무엇입니까?

  10. 10

    몇 개의 노드를 건너 뛰어 두 개의 xml을 비교하는 방법은 무엇입니까?

  11. 11

    Cypress에서 두 개의 데이터 속성 검사를 추가하는 방법은 무엇입니까?

  12. 12

    공통 속성을 가진 두 노드 간의 관계를 생성하는 방법은 무엇입니까?

  13. 13

    PHP에서 XML에 속성을 추가하는 방법은 무엇입니까?

  14. 14

    if 문을 사용하여 r에서 두 개의 변수를 증가시키는 방법은 무엇입니까?

  15. 15

    속성에 ID 노드를 추가하고 결과 neo4j에서 노드의 몇 가지 속성을 제거하는 방법은 무엇입니까?

  16. 16

    여러 XML 파일에서 두 노드를 읽는 가장 효율적인 방법은 무엇입니까?

  17. 17

    PHP에서 XML의 모든 노드와 속성의 이름을 얻는 방법은 무엇입니까?

  18. 18

    XSLT에서 for : each를 사용하여 두 개의 xml 태그 값을 추가하는 방법은 무엇입니까?

  19. 19

    기존 값이없는 노드를 버리지 않고 R의 복잡한 XML에서 값을 추출하는 방법은 무엇입니까? 내 for-loop가 매우 느립니다.

  20. 20

    파이썬을 사용하여 XML 문서의 부모 노드에 중첩 된 자식 노드를 추가하는 방법은 무엇입니까?

  21. 21

    모델 메서드에서 두 개의 날짜 속성을 결합하는 방법은 무엇입니까?

  22. 22

    두 개의 버튼에서 단일 입력 상자에 값을 추가하는 방법은 무엇입니까?

  23. 23

    XDocument에서 루트가 아닌 노드의 xmlns 속성을 제거하는 방법은 무엇입니까?

  24. 24

    HTML 파일에서 두 개의 특정 필드 값을 출력하는 가장 간단한 방법은 무엇입니까?

  25. 25

    xml SVG 파일에서 각 요소의 속성을 바꾸고 저장하는 방법은 무엇입니까?

  26. 26

    Presto에서 두 개의 키 맵을 값 (배열)에 추가하는 방법은 무엇입니까?

  27. 27

    R에서 독특하고 일치하는 것을 가장 잘 결합하는 방법은 무엇입니까?

  28. 28

    r 변수의 가장 낮은 두 요소에 대한 정보를 추출하는 방법은 무엇입니까?

  29. 29

    노드에서 두 개의 입력을 차례로 읽는 방법은 무엇입니까?

뜨겁다태그

보관