Reputation: 235
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
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
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
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
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