форматировать столбцы на фрейме данных в r - PullRequest
2 голосов
/ 11 марта 2020

Я хочу отформатировать определенные столбцы кадра данных, изменяя десятичную метку и количество десятичных позиций

a <- c(3.412324463,3.2452364)
b <- c(2.2342,4.234234)
c <- data.frame(A=a, B=b)

Я могу сделать это столбец за столбцом, но лучше применить это к различным столбцам, также я не могу найти количество десятичных знаков. "цифры = 2" дает мне только цифры, включая десятичную часть

c$A <- format(c$A, decimal.mark = ",",digits = 2)

1 Ответ

2 голосов
/ 11 марта 2020

Лучше не использовать имена функций (c) для именования объектов. Чтобы применить format ко всем столбцам

c[] <- lapply(c, format, decimal.mark = ",", digits = 2)

Или с formatC

c[] <- lapply(c, formatC, decimal.mark =",", format = "f", digits = 2)

Если нам нужно применить к выбранным нескольким столбцам, то есть столбцы с 1 по 3 и 7 : 10

j1 <- c(1:3, 7:10)
c[j1] <- lapply(c[j1, formatC, decimal.mark =",", format = "f", digits = 2)

Или другой вариант с sprintf

c[] <- lapply(c, function(x) sub(".", ",", sprintf("%0.2f", x), fixed = TRUE))
...