programing

행 이름을 첫 번째 열로 변환하려면 어떻게 해야 합니까?

closeapi 2023. 6. 5. 23:54
반응형

행 이름을 첫 번째 열로 변환하려면 어떻게 해야 합니까?

다음과 같은 데이터 프레임이 있습니다.

df
              VALUE              ABS_CALL DETECTION P-VALUE    
    1007_s_at "957.729231881542" "P"      "0.00486279317241156"
    1053_at   "320.632701283368" "P"      "0.0313356324173416" 
    117_at    "429.842323161046" "P"      "0.0170004527476119" 
    121_at    "2395.7364289242"  "P"      "0.0114473584876183" 
    1255_g_at "116.493632746934" "A"      "0.39799368200131"   
    1294_at   "739.927122116896" "A"      "0.0668649772942343" 

행 이름을 첫 번째 열로 변환하고 싶습니다.현재 다음과 같은 방법을 사용하여 첫 번째 열로 행 이름을 만듭니다.

  d <- df
  names <- rownames(d)
  rownames(d) <- NULL
  data <- cbind(names,d)

이것을 하기 위한 한 줄이 있습니까?

또는 사용할 수 있습니다.tibblerownames_to_column데이비드의 대답과 같은 것을 합니다.

library(tibble)
df <- tibble::rownames_to_column(df, "VALUE")

참고: 이전 기능은 다음과 같습니다.add_rownames()더 이상 사용되지 않으며 에 의해 대체되고 있습니다.tibble::rownames_to_column()

다음을 사용하여 메모리를 재할당하지 않고 행 이름을 제거하고 참조를 통해 열로 변환할 수 있습니다.->) 사용setDT그리고 그것들keep.rownames = TRUE로부터의 논쟁.data.table꾸러미

library(data.table)
setDT(df, keep.rownames = TRUE)[]
#    rn     VALUE  ABS_CALL DETECTION     P.VALUE
# 1:  1 1007_s_at  957.7292         P 0.004862793
# 2:  2   1053_at  320.6327         P 0.031335632
# 3:  3    117_at  429.8423         P 0.017000453
# 4:  4    121_at 2395.7364         P 0.011447358
# 5:  5 1255_g_at  116.4936         A 0.397993682
# 6:  6   1294_at  739.9271         A 0.066864977

@snoram에서 언급한 것처럼 새 열에 원하는 이름을 지정할 수 있습니다.setDT(df, keep.rownames = "newname")행 열에 "새 이름"을 추가합니다.

한 줄 옵션은 다음과 같습니다.

df$names <- rownames(df)

또는 새 데이터 프레임을 생성하거나 아래 예제와 같이 현재 데이터 프레임을 덮어쓸 수 있으므로 외부 패키지를 사용할 필요가 없습니다.그러나 이러한 방식은 대규모 데이터 프레임에서는 효율적이지 않을 수 있습니다.

df <- data.frame(names = row.names(df), df)

위의 제안에 따라 내 의견을 답변으로 이동했습니다.

추가 패키지가 필요하지 않습니다. 여기 한 줄로 된 패키지가 있습니다.

d <- cbind(rownames(d), data.frame(d, row.names=NULL))

dplyr::as_tibble(df, rownames = "your_row_name")훨씬 더 간단한 결과를 얻을 수 있습니다.

또는 를 사용하여DBIs sqlRownamesToColumn

library(DBI)
sqlRownamesToColumn(df)

데이터 행 이름을 실제 열로 변경

data <- data %>%
  rownames_to_column(var="the name you want")
df = data.frame(columnNameILike = row.names(df), df, row.names=NULL)

언급URL : https://stackoverflow.com/questions/29511215/how-can-i-convert-row-names-into-the-first-column

반응형