S S
S S

Reputation: 235

how to transpose without getting creating headers in r?

i have a dataframe which shows percent by gender

df is my dataframe

  sex     percent
* <chr> <dbl>
1 Men   11.7 
2 Women  7.42

i want to transpose the data but its getting created with some other headers.my output shows like below on using t(df). can some one please help with this

            1          2         
sex      "Men"      "Women"   
percent"11.67558" " 7.41533"

i need something like below

sex      "Men"      "Women"   
percent"11.67558" " 7.41533"

Upvotes: 0

Views: 155

Answers (4)

ThomasIsCoding
ThomasIsCoding

Reputation: 102309

Try the code below

> unname(data.frame(t(df)))

sex       Men Women
percent 11.70  7.42

or

> t(setNames(unstack(rev(df)), "percent"))
         Men Women
percent 11.7  7.42

Upvotes: 0

WilliamGram
WilliamGram

Reputation: 683

How about using tidyr:

library(tidyr)
df <- df %>% 
  tidyr::pivot_wider(
    names_from = sex, values_from = percent
  )

df

# A tibble: 1 x 2
#     Men Women
#   <dbl> <dbl>
# 1  11.7  7.42

The dataframe I used:

df <- data.frame(
  sex = c('Men' , 'Women'),
  percent = c(11.7L, 7.42L),
  stringsAsFactors = FALSE
)

Upvotes: 1

Ronak Shah
Ronak Shah

Reputation: 389155

Turn sex column to rowname and then transpose :

rownames(df) <- df$sex
df$sex <- NULL
t(df)

#         Men Women
#percent 11.7  7.42

Upvotes: 1

SeongMen Jeon
SeongMen Jeon

Reputation: 41

using colnames() function remove some other headers

tmp <- t(df)
colnames(tmp) <- c("", "")
tmp

#                       
# sex     "Men"   "Women"
# percent "11.70" " 7.42"

Upvotes: 1

Related Questions