R: читать квантильные данные [дубликат]

  1. вы можете десериализовать его в промежуточный класс, который обладает свойством: string Body {get; set;}
  2. десериализовать строку «body» в соответствующий тип
  3. создать новый экземпляр вашего класса, который представляет вашу целевую модель.
  4. сериализовать эту модель

Вот программа, которая делает это с динамическим типом и анонимными объектами.

static void Main(string[] args)
{
    var json = File.ReadAllText("JsonFile1.json");
    dynamic obj = JsonConvert.DeserializeObject(json);

    var dest = new
    {
        responses = ((IEnumerable<dynamic>)obj.responses).Select(x => new
        {
            info = x.info,
            body = JsonConvert.DeserializeObject((string)x.body)
        })
    };

    var destJson = JsonConvert.SerializeObject(dest);
    File.WriteAllText("JsonFile2.json", destJson);
}

В качестве альтернативы вы можете просто построить новую версию любого типа назначения вместо анонимного типа, если вы не хотите повторить инициализацию josn.

3
задан Bryan P 3 January 2014 в 00:13
поделиться

4 ответа

В R. Нет никакого «процентного» типа. Поэтому вам нужно выполнить некоторую пост-обработку:

DF <- read.table(text="actual,simulated,percent error
2.1496,8.6066,-300%
0.9170,8.0266,-775%
7.9406,0.2152,97%
4.9637,3.5237,29%", sep=",", header=TRUE)

DF[,3] <- as.numeric(gsub("%", "",DF[,3]))/100

#  actual simulated percent.error
#1 2.1496    8.6066         -3.00
#2 0.9170    8.0266         -7.75
#3 7.9406    0.2152          0.97
#4 4.9637    3.5237          0.29
8
ответ дан Roland 26 August 2018 в 07:30
поделиться

Tidyverse имеет несколько способов решения таких проблем. Вы можете использовать спецификацию parse_number (), которая будет лишать номер с любыми символами, текстом и т. Д .:

sample_data = "actual,simulated,percent error\n 2.1496,8.6066,-300%\n 0.9170,8.0266,-775%\n7.9406,0.2152,97%\n4.9637,3.5237,29%"
DF <- read_csv(sample_data,col_types = cols(`percent error`= col_number()))

# A tibble: 4 x 3
# actual   simulated `percent error`
# <chr>        <dbl>           <dbl>
# 1 2.1496     8.61           -300  
# 2 + 0.9170     8.03           -775 
# 3 + 7.9406     0.215            97.0
# 4 + 4.9637     3.52             29.0 
0
ответ дан Madhulika Chaudhry 26 August 2018 в 07:30
поделиться

Это то же самое, что и решение Роланда, за исключением использования пакета stringr. При работе со строками я рекомендую его, хотя интерфейс более интуитивно понятен.

library(stringr)
d <- str_replace(junk$percent.error, pattern="%", "")
junk$percent.error <- as.numeric(d)/100
2
ответ дан Mark Heckmann 26 August 2018 в 07:30
поделиться

С помощью data.table вы можете достичь этого как

a <- fread("file.csv")[,`percent error` := as.numeric(sub('%', '', `percent error`))/100]
1
ответ дан Ott Toomet 26 August 2018 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: