Как я могу специально добавить .0 к целым числам в столбце, содержащем целые и десятичные числа? - PullRequest
1 голос
/ 16 марта 2020

Вопрос: как конкретно добавить .0 ко всем df$x -значениям, не содержащим десятичных дробей?

Возьмите следующее a dataframe

df <- data.frame(x=c("2.8","9","0.5","1.2","4","12"))

> head(df)

    x
1 2.8
2   9
3 0.5
4 1.2
5   4
6  12

Желаемый результат выглядит следующим образом

> head(df)
     x
1  2.8
2  9.0
3  0.5
4  1.2
5  4.0
6 12.0

РЕДАКТИРОВАТЬ

Я хочу автоматически добавить .0 ко всем целым числам в ee$x, что указано ниже.

Я пытался ee$x <- as.numeric(as.character(ee$x)), но это не помогло. Может ли что-нибудь поменяться с моим фреймом данных?

ee$x <- c(0.6, 3.3, 1, 0.6, 0.6, 3.7, 1.4, 1.1, 1.8, 1.6, 0.7, 0.5, 0.3, 
1.7, 0.5, 1.2, 4.1, 0.6, 1.4, 1.3, 1.8, 2.6, 0.7, 0.8, 1, 0.7, 
0.7, 2.1, 1.3, 2.7, 1.3, 0.8, 1.1, 1.8, 1.8, 0.4, 0.9, 6.4, 1.7, 
1.5, 0.6, 2.7, 0.4, 1.5, 1.4, 1.8, 2.3, 0.7, 2.4, 1.2, 0.6, 0.8, 
3, 4, 0.5, 1.2, 5.1, 1.5, 0.6, 1.2, 1.7, 0.7, 1.4, 2.7, 1.1, 
0.9, 0.5, 0.7, 0.9, 0.4, 0.8, 0.8, 0.5, 0.9, 0.5, 1.2, 1.4, 2.5, 
2.7, 4.2, 0.8, 0.5, 1.7, 1.2, 1.6, 0.5, 2.6, 2, 3.9, 0.6, 0.2, 
0.5, 0.8, 0.5, 0.5, 0.6, 1.4, 0.9, 1, 1.8, 3.9, 6.2, 1.9, 0.6, 
0.4, 0.9, 4.3, 7.6, 2.6, 1.6, 1, 0.5, 1.7, 0.7, 1.7, 1.3, 0.8, 
1.2, 1.3, 3, 2.1, 2.1, 1.1, 1.4, 2.2, 5.7, 3, 1, 0.6, 0.5, 0.7, 
1.1, 2.1, 1.6, 0.9, 4.6, 0, 0.6, 1.8, 1.7, 1.6, 1, 1.2, 0.5, 
1.1, 2.9, 0.8, 4.7, 2.5, 1.6, 4, 3, 4, 6, 4, 1, 4, 3, 2, 10, 
3, 3, 5, 4, 5, 2, 4, 3, 4, 4, 4, 2, 4, 2, 2, 3, 7, 4, 4, 6, 3, 
5, 4, 2, 3, 3, 5, 8, 0, 4, 3, 5, 5, 11, 3, 2, 3, 3, 3, 12, 1, 
3, 7, 4, 5, 3, 3, 3, 1, 4, 5, 2, 5, 11, 4, 0, 3, 20, 10, 10, 
3, 2, 4, 5, 3, 4, 2, 4, 5, 3, 4, 7, 7, 4, 6, 4, 10, 3, 2, 4, 
5, 3, 4, 3, 7, 3, 4, 3, 4, 5, 3, 4, 5, 3, 4, 2, 4, 5, 5, 12, 
7, 7, 4, 5, 4, 4, 25, 7, 5, 5, 8, 3, 2, 2, 2, 4, 12, 5, 4, 2, 
35, 3, 9, 4, 7, 14, 3, 2, 3, 6, 4, 1, 8, 5, 2.5, 0, 2, 4, 12, 
18, 4, 6, 6, 6, 2, 1, 4, 8, 16, 20, 23, 10, 5, 5, 12, 35, 2, 
20, 5, 20, 10, 15, 5, 15, 10, 10, 8, 20, 10, 5, 15, 5, 10, 10, 
20, 5, 10, 5, 5, 10, 20, 10, 3, 5, 15, 15, 15, 10, 10, 10, 5, 
5, 8, 10, 15, 5, 5, 5, 10, 13, 5, 10, 8, 8, 5, 4, 5, 10, 20, 
5, 10, 15, 20, 10, 10, 10, 2, 20, 5, 5, 5, 8, 5, 10, 5, 8, 15, 
10, 10, 5, 10, 4, 4, 5, 10, 5, 20, 10, 18, 10, 8, 8, 8, 10, 8, 
10, 15, 10, 10, 10, 40, 30, 8, 3, 30, 10, 20, 5, 5, 10, 20, 10, 
10, 10, 10, 5, 10, 30, 2, 5, 15, 10, 10, 10, 10, 8, 20, 8, 10, 
10, 25, 20, 8, 10, 8, 15, 10, 35, 5, 3, 10, 15, 35, 20, 18, 5, 
3, 8, 8, 15, 10, 30, 10, 8, 8, 10, 15, 5, 5, 15, 10, 10, 15, 
15, 10, 20, 30, 10, 10, 15, 20, 2, 15, 8, 10, 30, 10, 10, 8, 
1.5, 0.6, 1.3, 13.6, 1.6, 3.2, 0.8, 1.6, 2.4, 0.3, 0.5, 0.4, 
0.4, 7.6, 2, 3.8, 0, 2.1, 1.5, 0.5, 2.6, 0.6, 0, 0.9, 21.3, 1.3, 
2.7, 5, 5, 1, 7, 1, 5, 2, 11, 3, 0.8, 1, 0.6, 1, 10, 1, 8, 1, 
1.2, 6.4, 1.6, 1.3, 7, 8, 2, 1, 1, 6, 5.5, 3.9, 1.5, 4, 25.8, 
10, 6, 3.4, 8, 1.1, 3, 1, 3, 11, 2.5, 2, 2, 6, 3.5, 5, 10, 7, 
11, 20, 3, 3, 1, 1.3, 0.7, 0.8, 1.8, 1.8, 2, 2, 2, 5, 2, 5, 1.1, 
3.9, 11, 2, 4.7, 3, 2.2, 4.7, 3.1, 5.6, 1.4, 21.3, 9, 1.6, 3.3, 
1.5, 4, 3, 0.5, 1.2, 2.7, 2.4, 1.8, 2, 4.4, 2, 4, 3, 12, 4, 2, 
6, 3.2, 2, 2, 2, 10.5, 5, 2.5, 4.9, 1.8, 2.7, 7.8, 11.9, 3, 4, 
1, 3, 2, 3, 5, 1, 2, 1, 3, 2, 2, 2, 3, 1, 3, 2, 5, 2, 4, 1, 3, 
2, 2, 1, 4, 5, 1, 1, 1, 1, 2, 3, 3, 3, 2, 2, 1, 4, 1, 1, 1, 3, 
3, 4, 2, 6, 2, 3, 5, 1, 6, 3, 2, 8, 1, 2, 4, 6, 3, 3, 4, 14, 
9, 4, 6, 5, 2, 4, 9, 3, 5, 5, 6, 7, 3, 5, 1, 10, 10, 0, 5, 5, 
5, 5, 50, 1, 0, 2, 2, 2, 2, 5, 10, 2, 5, 2, 20, 5, 5, 0, 2, 5, 
2, 1, 1, 0, 0, 0, 2, 1, 10, 1, 3, 5, 10, 10, 1, 5, 1, 5, 2, 5, 
1, 5, 1, 2, 1, 1, 1, 5, 2, 20, 2, 1, 1, 2, 2, 1, 4, 2, 2, 2, 
5, 2, 1, 2, 2, 2, 0, 3, 5, 1, 1, 0, 2, 10, 10, 1, 2, 2, 2, 3, 
2, 5, 2, 5, 5, 2, 5, 10, 2, 2, 2, 2, 2, 4, 2, 5, 2, 5, 2, 0, 
2, 2, 10, 2, 2, 2, 30, 1, 20, 10, 2, 1, 1, 10, 2, 2, 2, 2, 5, 
1, 2, 5, 1, 2, 1, 2, 10, 5, 2, 5, 5, 2, 5, 5, 2, 5, 5, 10, 1, 
5, 2, 2, 2, 2, 1, 10, 2, 5, 5, 2, 1, 2, 4, 2, 2, 10, 5, 2, 1, 
2, 1, 5, 2, 10, 2, 2, 10, 10, 10, 5, 2, 10, 20, 3, 3, 2, 2, 5, 
10, 3, 2, 5, 4, 10, 3, 3, 5, 10, 5, 5, 3, 2, 5, 10, 5, 5, 5, 
5, 3, 5, 5, 4, 2, 3, 3, 10, 2, 3, 5, 5, 4, 5, 5, 5, 5, 5, 10, 
3, 2, 2, 4, 2, 5, 2, 5, 5, 2, 10, 2, 2, 5, 3, 2, 2, 5, 5, 2, 
2, 10, 5, 5, 3, 2, 3, 15, 10, 5, 2, 2, 5, 10, 10, 5, 5, 2, 2, 
2, 10, 2, 2, 2, 2, 5, 4, 4, 4, 5, 5, 2, 2, 4, 1, 5, 5, 5, 3, 
5, 2, 10, 4, 5, 2, 2, 5, 5, 4, 2, 5, 2, 3, 2, 3, 2, 2, 5, 2, 
10, 5, 4, 4, 2, 5, 3, 4, 4, 3, 2, 5, 2, 10, 5, 15, 2, 3, 5, 3, 
4, 10, 4, 3, 5, 3, 2, 2, 3, 3, 5, 2, 5, 2, 5, 5, 2, 4, 2, 5, 
2, 3, 5, 5, 2, 3, 5, 4, 3, 2, 4, 3, 3, 4, 4, 4, 2, 5, 3, 2, 2, 
3, 5, 3, 5, 3, 4, 5, 2, 5, 3, 3, 3, 4, 3, 4, 5, 5, 5, 2, 3, 4, 
3, 5, 3, 5, 3, 3, 2, 5, 4, 3, 10, 5, 5, 5, 2, 4, 10, 3, 2, 3, 
3, 4, 5, 5, 4, 3, 3, 5, 5, 5, 3, 2, 3, 4, 3, 2, 8, 3, 3, 5, 4, 
2, 5, 4, 3, 4, 5, 4, 3, 5, 3, 5, 8, 5, 2, 2, 3, 5, 3, 2, 4, 3, 
1, 5, 2, 3, 3, 3, 5, 2, 3, 2, 5, 4, 5, 3, 5, 2, 4, 5, 2, 4, 4, 
4, 3, 3, 6, 3, 8, 3, 4, 3, 7, 2, 2, 5, 10, 4, 8, 4, 7, 10, 1, 
1, 7, 2, 1, 3, 7, 7, 3, 8, 1, 3, 5, 1, 3, 15, 7, 1, 5, 4, 2, 
14, 6, 9, 12, 1, 15, 4, 1, 2, 2, 4, 1, 1, 8, 3, 4, 2, 18, 2, 
3, 5, 1, 10, 2, 10, 2, 4, 2, 2, 1, 2, 5, 3, 5, 10, 4, 5, 1, 8, 
2, 5, 9, 4, 7, 4, 7, 4, 2, 1, 10, 3, 3, 4, 1, 8, 4, 1, 2, 1, 
8, 2, 4, 2, 6, 5, 1, 6, 1, 15, 3, 1, 3, 4, 9, 2, 12, 1, 1, 2, 
1, 7, 6, 9, 2, 3, 6, 1, 2, 2, 2, 1, 1, 3, 4, 2, 4, 1, 4, 3, 3, 
3, 8, 1, 7, 4, 1, 2, 1, 2, 12, 2, 2, 7, 2, 3, 2, 2, 4, 5, 6, 
3, 11, 4, 1, 3, 3, 13, 4, 2, 4, 1, 6, 7, 11, 6, 2, 6, 4, 2, 2, 
1, 10, 4, 1, 1, 2, 6, 2, 3, 8, 8, 7, 3, 3, 3, 2, 14, 2, 3, 2, 
8, 1, 10, 1, 2, 11, 3, 3, 2, 1, 2, 1, 10, 1, 3, 4, 4, 3, 10, 
5, 3, 6, 7, 3, 10, 1, 15, 3, 4, 4, 1, 1, 8, 1, 3, 40, 3, 12, 
4, 1, 5, 1, 7, 7, 4, 4, 9, 7, 7, 8, 3, 3, 8, 8, 3, 5, 2, 2, 2, 
5, 4, 2, 2, 4, 5, 10, 3, 3, 4, 3, 4, 2, 8, 1, 4, 2, 3, 3, 2, 
3, 2, 1, 10, 6, 10, 5, 4, 6, 3, 6, 10, 4, 8, 8, 8, 8, 4, 3, 4, 
4, 6, 10, 4, 5, 2, 15, 12, 5, 4, 3, 10, 15, 3, 3, 8, 2, 4, 10, 
5, 5, 10, 2, 5, 10, 10, 6, 8, 6, 4, 8, 3, 4, 2, 8, 10, 30, 10, 
2, 3, 1, 1, 1, 1, 1, 4, 3, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 5, 
2, 1, 1, 1, 4, 60, 2, 3, 5, 3, 2, 1, 2, 2, 3, 2, 5, 0, 0, 1, 
3, 3, 2, 3, 2, 0, 4, 1, 3, 40, 1, 2, 2, 3, 2, 3, 1, 2, 2, 0, 
2, 2, 1, 10, 1, 9, 1, 2, 3, 7, 3, 10, 1, 3, 2, 3, 5, 3, 5, 1, 
10, 1, 2, 3, 2, 3, 2, 10, 2, 2, 1, 3, 2, 6, 1, 2, 1, 5, 2, 1, 
1, 2, 3, 3, 4, 3, 2, 3, 5, 7, 1, 10, 2, 2, 3, 2, 1, 2, 2, 2, 
1, 1, 2, 2, 2, 4, 2, 2, 2, 4, 0, 6, 1, 1, 2, 2, 1, 2, 1, 2, 5, 
1, 2, 2, 2, 1, 3, 1, 1, 5, 10, 1, 2, 3, 5, 3, 2, 2, 1, 1, 1, 
2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 3, 1, 3, 5, 1, 3, 3, 20, 2, 
2, 2, 4, 0, 3, 1, 1, 2, 1, 3, 2, 4, 1, 0, 2, 2, 6, 2, 2, 2, 4, 
2, 2, 2, 2, 2, 1, 1, 2, 1, 3, 2, 1, 3, 1, 1, 5, 4, 8, 3, 20, 
1, 3, 2, 2, 1, 4, 1, 1, 1, 2, 5, 2, 5, 5, 3, 3, 2, 2, 1, 1, 1, 
3, 3, 2, 0, 2, 2, 2, 1, 2, 1, 5, 6, 1, 2, 1, 3, 1, 5, 2, 2, 1, 
0, 2, 1, 0, 1, 0, 0, 0, 1, 3, 2, 2, 5, 5, 0, 0, 0, 3, 0, 8, 5, 
3, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 2, 2, 
0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 2, 1, 5, 4, 1, 1, 3, 1, 
1, 1, 0, 0, 0, 1, 3, 0, 1, 30, 0, 0, 0, 1, 0, 1, 7, 0, 5, 0, 
1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 2, 
3, 1, 1, 1, 0, 3, 3, 2, 1, 2, 2, 3, 1, 3, 1, 3, 5, 1, 1, 4, 1, 
4, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 
1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, 1, 3, 2, 1, 2, 1, 1, 1, 
1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4.8, 1.5, 6.4, 
0.5, 3.6, 3.4, 3.8, 9.3, 11.6, 1.5, 0.5, 1, 18.5, 6.3, 4.4, 0.5, 
0.5, 0.5, 3.5, 3.1, 0.5, 9.7, 2.8, 0.5, 1, 7.5, 3.1, 5.1, 2.2, 
4.4, 4, 4.5, 9.5, 31.5, 4.1, 0.5, 1, 1.3, 3.5, 3.2, 14.1, 3.1, 
7.1, 30, 5, 1.5, 3, 1.2, 2.8, 5.7, 4, 8.2, 9.7, 2.7, 20, 1.9, 
25, 5.1, 5.7, 11.8, 3, 40, 3, 15, 28.2, 5, 2.6, 7.1, 3.7, 9, 
6, 9.5, 1, 1, 1, 5.5, 1, 3.9, 4.3, 3, 2.4, 3.5, 3.1, 2.4, 2, 
2.2, 11.1, 2.7, 15.9, 13.5, 6.4, 3.6, 16.5, 2.8, 3.3, 32.7, 3.3, 
29.6, 6.1, 3.9, 5, 8.2, 1, 11.9, 25, 17.9, 12.9, 20)

1 Ответ

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

Мы можем преобразовать в numeric

as.numeric(as.character(df$x))
#[1]  2.8  9.0  0.5  1.2  4.0 12.0

Может иметь больше контроля с sprintf

sprintf("%0.2f", as.numeric(as.character(df$x)))

Или с grep и paste

ifelse(grepl(".", df$x, fixed = TRUE), as.character(df$x), paste0(df$x, ".0"))
#[1] "2.8"  "9.0"  "0.5"  "1.2"  "4.0"  "12.0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...