小编ATM*_*hew的帖子

创建大型数据框架

假设我想从头开始生成一个大型数据框.

使用data.frame函数是我通常如何创建数据框架.但是,df类似于以下内容非常容易出错并且效率低下.

那么是否有更有效的方法来创建以下数据框.

df <- data.frame(GOOGLE_CAMPAIGN=c(rep("Google - Medicare - US", 928), rep("MedicareBranded", 2983),
                                   rep("Medigap", 805), rep("Medigap Branded", 1914),
                                   rep("Medicare Typos", 1353), rep("Medigap Typos", 635),
                                   rep("Phone - MedicareGeneral", 585),
                                   rep("Phone - MedicareBranded", 2967),
                                   rep("Phone-Medigap", 812),
                                   rep("Auto Broad Match", 27),
                                   rep("Auto Exact Match", 80),
                                   rep("Auto Exact Match", 875)),                   
                 GOOGLE_AD_GROUP=c(rep("Medicare", 928), rep("MedicareBranded", 2983),
                                   rep("Medigap", 805), rep("Medigap Branded", 1914),
                                   rep("Medicare Typos", 1353), rep("Medigap Typos", 635),
                                   rep("Phone ads 1-Medicare Terms",585),
                                   rep("Ad Group #1", 2967), rep("Medigap-phone", 812),
                                   rep("Auto Insurance", 27),
                                   rep("Auto General", 80),
                                   rep("Auto Brand", 875))) …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

从数据框中删除特定行

我正在处理一些美国政府数据,这些数据包含很长的城市和邮政编码列表.完成一些工作后,数据采用以下格式.

dat1 = data.frame(keyword=c("Bremen", "Brent", "Centreville, AL", "Chelsea, AL", "Bailytown, Alabama", "Calera, Alabama",
              "54023", "54024"), tag=c(rep("AlabamCity",2), rep("AlabamaCityST",2), rep("AlabamaCityState",2), rep("AlabamaZipCode",2)))
dat1
Run Code Online (Sandbox Code Playgroud)

但是,某些关键字无法正常运行.因此,在下面的示例中,有两个"邮政编码"标记为"AlabamaCity"和"AlabamaCityState".出于某种原因,政府的原始数据集有几个拉链码,这些拉链码与其他邮政编码没有正确分组.

dat2 = data.frame(keyword=c("Bremen", "Brent", "50143", "Chelsea, AL", "Bailytown, Alabama", "52348",
              "54023", "54024"), tag=c(rep("AlabamCity",2), rep("AlabamaCityST",2), rep("AlabamaCityState",2), rep("AlabamaZipCode",2)))
dat2
Run Code Online (Sandbox Code Playgroud)

我想知道如何迭代整个关键字列表并删除所有具有数值的行(它们实际上保存为字符值),这些行没有"AlabamaZipCode"标记.所以以前的数据应该看起来像.

dat3 = data.frame(keyword=c("Bremen", "Brent", "Chelsea, AL", "Bailytown, Alabama", "54023", "54024"), 
          tag=c(rep("AlabamCity",2), rep("AlabamaCityST",1), rep("AlabamaCityState",1), rep("AlabamaZipCode",2)))
dat3
Run Code Online (Sandbox Code Playgroud)

挑战似乎是我想要保留某些数值以及我想要删除的其他数值.谁能帮忙.

r dataframe

4
推荐指数
2
解决办法
2万
查看次数

使用SQLDF从列中选择特定值

SQLDF新手在这里.

我有一个大约15,000行和1列的数据框.数据看起来像:

cars
autocar
carsinfo
whatisthat
donnadrive
car
telephone
...
Run Code Online (Sandbox Code Playgroud)

我想使用包sqldf循环遍历列并选择其值包含"car"的所有值.但是,以下代码生成错误.

> sqldf("SELECT Keyword FROM dat WHERE Keyword="car")
Error: unexpected symbol in "sqldf("SELECT Keyword FROM dat WHERE Keyword="car"
Run Code Online (Sandbox Code Playgroud)

没有意外的符号,所以我不确定什么是错的.

首先,我想知道包含'car'的所有值.那么我只想知道那些只包含'汽车'的价值观.

谁能帮忙.

编辑:

好吧,有一个意想不到的符号,但它只给我车,而不是每一行都包含'汽车'.

> sqldf("SELECT Keyword FROM dat WHERE Keyword='car'")
  Keyword
1     car
Run Code Online (Sandbox Code Playgroud)

sql r

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

查找每行中的单词数

假设我想找到数据帧每行中的字数.所以在下面的例子中,我想找到第一列中的第一个值有3个单词,第二个值有4个单词,依此类推.我认为这是其中一个应用函数的任务,但我很难搞清楚这一点.

dat = data.frame(one=c("That is Cool",
  "I like my bank", "He likes pizza", "What"))
Run Code Online (Sandbox Code Playgroud)

我是否需要使用strsplit()apply()在创建函数时使用该函数更好:apply(dat, 1, function(x)...

string r apply

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

检查条件并将项添加到数据框

我正在尝试开发一个函数,它允许我将新元素输入到数据框,然后检查它们是否包含某些单词.

df <- data.frame(keyword=c("He drives a Honda", "He goes to Ohio State"), 
        car=c(1,0), school=c(0,1))
df

               keyword car school
     He drives a Honda   1      0
 He goes to Ohio State   0      1
Run Code Online (Sandbox Code Playgroud)

在此数据框中,汽车和学校是二进制值,如果来自汽车/学校矢量的单词是关键字的一部分,则该值包含1.如果关键字中不存在单词,则分配0.

car <- c("Honda", "Chevy", "Toyota", "Ford")
school <- c("Michigan", "Ohio State", "Missouri")
Run Code Online (Sandbox Code Playgroud)

我想使用一个函数在数据框中输入新的关键字,同时迭代汽车和学校矢量中特定值的关键字.

main <- function(keyword){
    n = strsplit(as.character(keyword), " ")[[1]]
    for( i in keyword ){
       if( any(n==car) ){
          df$car <- c(1)
       }
       if( any(n==school )){
          df$school <- c(1)
    }
}
Run Code Online (Sandbox Code Playgroud)

}

此功能未完成,会产生以下错误.因为汽车和学校的矢量长度为3,所以似乎产生了错误.

> main("He likes Ford and …
Run Code Online (Sandbox Code Playgroud)

r dataframe

3
推荐指数
2
解决办法
965
查看次数

查找三个字符串的所有可能组合

假设我有几个词根,前缀和后缀.

roots <- c("car insurance", "auto insurance")
prefix <- c("cheap", "budget")
suffix <- c("quote", "quotes")
Run Code Online (Sandbox Code Playgroud)

R中是否有一个简单的函数或包,它允许我构造三个字符向量的所有可能组合.

所以我想要一个列表,数据框或向量,它返回每个字符串的所有可能组合的以下列表.

cheap car insurance
budget car insurance
cheap car insurance quotes
cheap auto insurance quotes
auto insurance quote
auto insurance quotes
...
Run Code Online (Sandbox Code Playgroud)

像"汽车保险报价"这样的东西,我只使用后缀而没有前缀,所以我需要得到这些结果的所有可能结果.

string r

3
推荐指数
2
解决办法
6473
查看次数

使用rep()函数

我正在使用该rep()函数多次重复字符串中的每个元素.我拥有的每个字符都包含状态信息,我需要重复三次字符向量的前三个元素,第四个元素重复五次.

所以我想说我有以下特征向量.

al <- c("AlabamaCity", "AlabamaCityST", "AlabamaCityState", "AlabamaZipCode") 
ak <- c("AlaskaCity", "AlaskaCityST", "AlaskaCityState", "AlaskaZipCode")
az <- c("ArizonaCity", "ArizonaCityST", "ArizonaCityState", "ArizonaZipCode")
ar <- c("ArkansasCity", "ArkansasCityST", "ArkansasCityState", "ArkansasZipCode")
Run Code Online (Sandbox Code Playgroud)

我想最终得到以下输出.

AlabamaCity
AlabamaCity
AlabamaCity
AlabamaCityST
AlabamaCityST
AlabamaCityST
AlabamaCityState
AlabamaCityState
AlabamaCityState
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
...
Run Code Online (Sandbox Code Playgroud)

我能够通过以下命令获得所需的输出,但是当我运行所有50个州时,它有点不方便.另外,我可能在阿拉巴马州有237个城市的另一个专栏,我将不可避免地遇到问题,将第一列中的名称与第二列中的值进行匹配.

   dat = data.frame(name=c(rep(al[1:3],each=3), rep(al[4],each=6), 
                rep(ak[1:3],each=3), rep(ak[4],each=6)))
   dat


   dat2 = data.frame(name=c(rep(al[1:3],each=3), rep(al[4],each=6), 
                rep(ak[1:3],each=3), rep(ak[4],each=6)),
                city=c(rep("x",each=15), rep("y",each=15)))
   dat2
Run Code Online (Sandbox Code Playgroud)

当然,在现实生活中,'x'和'y'不是单一的价值观.

所以我的问题是关于是否有更有效的方法来执行此任务.与问题密切相关的是,什么时候抛弃程序编程以支持R中的OOP变得很重要(不是程序员,所以第二部分可能是一个非常愚蠢的问题)更重要的是,这是一个我应该看的任务对于oop相关的解决方案.

string r

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

使用IN()中的序列

我正在尝试使用类似于以下的代码选择具有特定源值的所有值.

l.sub IN('12480','12481')
Run Code Online (Sandbox Code Playgroud)

但是,我需要sub包含值10921-12480的所有内容.有没有办法快速选择这些值而不输入每个值.

谢谢!

mysql sql

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

使用JOIN功能

我是MySQL的新手,我正在尝试了解有关JOIN功能的更多信息.

假设我有以下代码,我想找到变量的每个级别的计数,然后加入两列.所以数据看起来像:

in_clicks:
one
one
one
two 
three
four
four 
four 
four
four
five 
five
six
seven
seven
seven
eight
Run Code Online (Sandbox Code Playgroud)

我正在尝试生成以下输出:

four    5
one     3
seven   3
five    2
two     1
three   1
six     1
eight   1
Run Code Online (Sandbox Code Playgroud)

对JOIN函数一无所知,我可以使用类似于以下代码的东西来获得我想要的结果.(它不起作用)

SELECT(SELECT * FROM in_clicks) AS keys,
     (SELECT COUNT(*) FROM in_clicks) AS KeysNum;
Run Code Online (Sandbox Code Playgroud)

但是,如何使用JOIN函数来优化我的sql代码?

mysql sql join

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

选择最早和最晚的日期

所以我有一个表格,结构如下:

in_click  first_name      create_date 
100       joe             2011-10-01 10:01
100       joe             2011-10-01 10:05
100       joe             2011-10-01 10:07
100       joe             2011-10-01 10:08
100       joe             2011-10-01 10:10
101       sara            2011-10-01 10:15
101       sara            2011-10-01 10:17
101       sara            2011-10-01 10:20
101       sara            2011-10-01 10:22
Run Code Online (Sandbox Code Playgroud)

对于每个名字,我想选择第一行和最后一行.所以它应该是名字为joe的第一个日期和名字为joe的最后一个日期.有点像if-else语句,但我不知道如何在MySQL中获取该信息.

救命?!

我正在运行以下查询来获取所有内容:

SELECT t.in_click_id, t.keyword, c.lead_id, c.first_name, c.last_name, 
ls.create_date, ls.discriminator, l.affiliate_id 
FROM lead_status AS ls
INNER JOIN leads AS l ON l.id = ls.lead_id 
INNER JOIN tracker AS t ON l.in_click_id = t.in_click_id
INNER JOIN contacts AS c ON …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

标签 统计

r ×7

sql ×4

dataframe ×3

mysql ×3

string ×3

apply ×1

join ×1