小编Ste*_*ven的帖子

动态确定数据框列是否存在,如果存在则进行变异

我有根据客户端名称从数据库中提取和处理数据的代码。某些客户端可能拥有不包含特定列名称的数据,例如,last_namefirst_name。对于不使用last_nameor 的客户first_name,我不在乎。对于确实使用这些字段中的任何一个的客户,我需要使用mutate()这些列,toupper()以便我可以稍后在 ETL 过程中加入这些标准化字段。

现在,我正在使用一系列if()语句和一些辅助函数来查看数据帧的名称,然后在它们存在时进行变异。我使用if()语句是因为ifelse()主要是矢量化的并且不能很好地处理数据帧。

library(dplyr)
set.seed(256)

b <- data.frame(id = sample(1:100, 5, FALSE), 
                col_name = sample(1000:9999, 5, FALSE), 
                another_col = sample(1000:9999, 5, FALSE))

d <- data.frame(id = sample(1:100, 5, FALSE), 
                col_name = sample(1000:9999, 5, FALSE), 
                last_name = sample(letters, 5, FALSE))

mutate_first_last <- function(df){

  mutate_first_name <- function(df){
    df %>%
      mutate(first_name = first_name %>% toupper())
  }

  mutate_last_name <- function(df){
    df …
Run Code Online (Sandbox Code Playgroud)

r dplyr

2
推荐指数
1
解决办法
1631
查看次数

使用Terraform将多个S3路径添加到胶履带

我正在使用Terraform在AWS中构建一些基础架构。我创建了几个S3存储桶,并希望Glue搜寻器每小时对这些存储桶进行一次爬网。我的Terraform Glue目录数据库,角色和策略都构建良好,但是当我尝试通过向爬网程序的s3_target{}一部分添加四个S3路径来创建爬网程序资源时,出现了故障:

resource "aws_glue_crawler" "datalake_crawler" {
  database_name = "${var.glue_db_name}"
  name          = "${var.crawler_name}"
  role          = "${aws_iam_role.glue.id}" 

  s3_target {
#    count = "${length(var.data_source_path)}"
    path = "${var.data_source_path}"#"${formatlist("%s", var.data_source_path)}"
  }
}
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

Error: aws_glue_crawler.datalake_crawler: s3_target.0.path must be a single value, not a list
Run Code Online (Sandbox Code Playgroud)

我尝试在中添加一条count语句,s3_target但这失败。我也尝试添加

"${formatlist("%s", var.data_source_path)}"
Run Code Online (Sandbox Code Playgroud)

path争论中,但这也失败了。

我可以s3使用Terraform向Glue履带添加多个路径吗?我可以通过AWS控制台实现这一点,但这需要使用基础架构作为代码来完成。

amazon-s3 amazon-web-services terraform aws-glue terraform-provider-aws

2
推荐指数
1
解决办法
627
查看次数

从`.json`文件读取的通用函数

所以,我可以随便写一个任意类型JSONNewtonsoft.Json:

type X = {
Number: decimal
Sequence: decimal
NumList: decimal list
}

let createItem (n, s, nL) = 
    {Number = n; 
    Sequence = s; 
    NumList = nL}

let items =
    [
        (1M, 1M, [1M; 2M; 3M])
        (2M, 2M, [2M; 4M; 6M])
        (3M, 3M, [3M; 6M; 9M])
    ]
    |> List.map createItem

open Newtonsoft.Json
open System.IO

let writeToJson (path: string) (obj: 'a) : unit =
    let serialized = JsonConvert.SerializeObject(obj)

    File.WriteAllText(path, serialized)

writeToJson "xList.json" items    
Run Code Online (Sandbox Code Playgroud)

如何编写足够通用的函数以便我可以读取JSON文件?换句话说,我想要像: …

f# json.net

1
推荐指数
1
解决办法
109
查看次数

R,CSV中的非唯一值,这是由于字符列值中的空白区域看不见的点

我试图在(大)数据集中找到唯一的物种,但它在unique()结果中返回两次相同的名称.

TestData <- read.csv("Data\\TestData.csv", stringsAsFactors = FALSE)

unique(TestData$Species)

[1] "Amblyeleotris aurora"  "Amblyeleotris aurora"  "Cetoscarus bicolor"    "Cetoscarus bicolor"    "Cephalopholis polleni"
[6] "Cephalopholis polleni"
Run Code Online (Sandbox Code Playgroud)

作为非唯一返回的相同物种之间没有拼写不匹配,当我查看csv文件时,它们看起来都是一样的.但是,当我将名称复制到R控制台或脚本时,有一个红色.将Genus和Species分开.喜欢Amblyeleotris.aurora.

这可能是csv文件的问题,但是当我在Notepad ++和MS excel中查看文件时,不会出现点.但是,对于相同物种(即"Amblyeleotris aurora"和"Amblyeleotris aurora"),MS Excel中的相等性检查评估为false.

如上所述,这更可能是csv的问题,但我想找到是否有办法在R内克服这个问题.

如果已经在某个地方回答过这个问题,或者这个问题太简单了,我可以提前道歉,但我没有在堆栈或互联网上找到任何解决方案.

下面是示例TestData csv文件的链接,用于复制ScriptPanel的示例和屏幕截图以显示红点.

TestData.csv文件

在此输入图像描述

干杯Shimal

csv excel r

1
推荐指数
1
解决办法
47
查看次数