Пересчитать столбец в data.frame - PullRequest
0 голосов
/ 21 марта 2019

Исходя из Python + Pandas, я попытался преобразовать столбец в R data.frame.

В Python / Pandas я бы сделал это так: df[['weight']] = df[['weight']] / 1000

В R я придумал это:

convertWeight <- function(w) {
    return(w/1000)
}
df$weight <- lapply(df$weight, convertWeight)

Я знаю библиотеку dplyr, которая имеет функцию mutate. Это позволило бы мне также преобразовать столбцы.

Есть ли другой способ изменить столбец без использования библиотеки dplyr? Что-то, что близко к Pandas способу сделать это?


EDIT

Проверяя значения в df $ weight, я вижу это:

> df[1,]
          date   weight
1 1.552954e+12 84500.01

> typeof(df[1,1])
[1] "list"
> df$weight[1]
[[1]]
[1] 84500.01

> typeof(df$weight[1])
[1] "list"

Это не число и не символ. Почему список?

Кстати: у меня есть данные из импорта json, вот так:

library(rjson)
data <- fromJSON(file = "~/Desktop/weight.json")

# convert json data to data.frame
df <- as.data.frame(do.call("rbind", json_data))
# select only two columns
df <- df[c("date", "weight")]
# now I converted the `date` value from posix to date
# and the weight value from milli grams to kg
# ...

Очевидно, мне нужно многое узнать о R.

1 Ответ

1 голос
/ 21 марта 2019
df$weight = as.numeric(df$weight)
df$weight = df$weight / 1000
# If you would like to eliminate the display of scientific notation:
options(scipen = 999)

# If having difficulty still because of the list, try
df = as.data.frame(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...