R: Создать таблицу, где ячейки имеют 1 или 0 десятичных знаков после rbind - PullRequest
0 голосов
/ 26 июня 2019

Я создаю таблицу в R. Значения в некоторых строках должны иметь 0 десятичных знаков (например, количество человек), в то время как значения в других строках должны иметь 1 десятичный знак (например, процент населения).

У меня есть фрейм данных, а затем я использовал функцию округления функцию округления в R для создания двух таблиц - round0 (0 десятичных знаков) и round1 (1 десятичных знаков).

round1<-round(prof.table[-c(2:3),], 1)
round0<-round(prof.table[2:3,], 0)

prof.table<-rbind(round0, round1)

После их объединения я ожидаю, что значения из круглого стола будут иметь нулевые десятичные разряды, а значения из круглого 1 будут иметь 1 десятичный разряд.Однако после rbind значения во всех ячейках имеют 1 десятичный знак, поэтому мои целые числа отображаются как nnn.0.Как я могу удалить это дополнительное десятичное место из целых чисел?

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Поскольку мне нужно было представить данные в таблице, я последовал предложению @Rui преобразовать данные в символьный формат, и спасибо @Jonny за подсказку, что векторы могут быть только одним классом:


#Round certain variables to one decimal point
round1<-round(prof.table[-c(2:3),], 1) 

#set as character
round1$`V1`<-as.character(round1$`V1`) 
round1$`V2`<-as.character(round1$`V2`) 

#Round others to zero decimal point
round0<-round(prof.table[2:3,], 0) 

#set them as character
round0$`V1`<-as.character(round0$`V1`) 
round0$`V2`<-as.character(round0$`V2`) 

#combine into data frame
prof.table<-rbind(round0, round1) 

1 голос
/ 26 июня 2019

Вы пытаетесь объединить значение numeric с integer. Вектор (или столбец data.frame) может иметь только один класс. Либо это приведет к тому, что числовые значения будут целыми числами, либо целые числа будут числовыми. При таком выборе последний вариант предпочтительнее, поскольку при преобразовании 2 в 2.0000 не происходит потери данных.

Это поможет объяснить различия в классах: В чем разница между целочисленным классом и числовым классом в R

Пример:

# create an integer vector x (0 decimal places) & numeric vector y (>0 decimal places)
x <- as.integer(1:3)
y <- runif(3)

# check their classes to confirm
class(x)
class(y)

# bind them together, and view class
z <- c(x, y)
z
class(z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...