小编vag*_*ond的帖子

R编程数据帧 - 基于位置返回值

我想知道是否有办法根据向量中的位置提取一个值,所以例如我有一个带有两个向量的数据框,我将它们从原始的V1和V2分组,就像一个ORDER在SQL中的BY.当我尝试按V1组类型获得第3分钟时出现问题.

有序数据框......

V1  V2
Ford    18
Ford    16
Ford    15
Ford    14
Ford    12
**Ford  5**
Ford    2
Ford    1
Nisan   10
Nisan   9
Nisan   8
Nisan   7
Nisan   6
**Nisan     5**
Nisan   4
Nisan   3
Toyota  20
Toyota  19
Toyota  15
Toyota  12
Toyota  11
**Toyota    10**
Toyota  6
Toyota  2
Run Code Online (Sandbox Code Playgroud)

结果我想在新数据框中,每个变量的第3分钟值...

V1 V2
Ford 5
Nisan 5
Toyota 10
Run Code Online (Sandbox Code Playgroud)

提前致谢.

aggregate r group-summaries

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

将列添加到数据框,在其他列中测试分类变量

我提到过:

所有示例都基于测试数字向量或其他列中的NA并添加新变量.这是一个简短的可重现的例子:

x <- c("dec 12", "jan 13", "feb 13", "march 13", "apr 13", "may 13",
       "june 13", "july 13", "aug 13", "sep 13", "oct 13", "nov 13")
y <- c(234, 678, 534, 122, 179, 987, 872, 730, 295, 450, 590, 312)
df<-data.frame(x,y)
Run Code Online (Sandbox Code Playgroud)

我想为df$x= dec | 添加"winter" jan | feb,"spring"for march | apr | may,"summer"和"autumn".

我试过了

df$season <- ifelse(df[1:3, ], "winter", ifelse(df[4:6, ], "spring", 
                    ifelse(df[7:9, ], "summer", "autumn")))
Run Code Online (Sandbox Code Playgroud)

我知道这是一种非常低效的做事方式,但我是一个新手和一个kludger.它返回了错误:

Error in ifelse(df[1:3, …
Run Code Online (Sandbox Code Playgroud)

for-loop r calculated-columns conditional-statements dataframe

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

存储没有日期但没有作为类字符的时间

我的类字符数据框中有一个local.time列,其中包含如下元素:

> a$local.time
 [1] "1:30 AM"  "6:29 AM"  "6:59 AM"  "9:54 AM"  "10:14 AM" "10:34 AM" "12:54 PM" "1:15 PM"  "1:20 PM" 
 [10] "1:20 PM"  "2:15 PM"  "2:15 PM"  "4:23 AM"  "6:28 AM"  "2:45 PM"  "3:08 PM"  "3:23 PM"  "3:58 PM" 
Run Code Online (Sandbox Code Playgroud)

我想将它们从类字符转换为时间变量.所以我用过:

> as.POSIXct(a$local.time, tz = "", format = "%I:%M %p", usetz = FALSE)
Run Code Online (Sandbox Code Playgroud)

这导致:

[1] "2014-10-31 01:30:00 EDT" "2014-10-31 06:29:00 EDT" "2014-10-31 06:59:00 EDT" "2014-10-31       09:54:00 EDT"
[5] "2014-10-31 10:14:00 EDT" "2014-10-31 10:34:00 EDT" "2014-10-31 12:54:00 EDT" "2014-10-31 13:15:00 …
Run Code Online (Sandbox Code Playgroud)

datetime r dataframe posixct

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

根据条件替换R中字符串的第一个元素

如果满足条件,我想用x替换x中字符串的第一个元素:如果x中的第一个元素"101"与y中的第一个字符串匹配,则将第一个元素"101"替换为空白.

x = c("101", "201", "301")
y = c("1", "7", "3")
Run Code Online (Sandbox Code Playgroud)

想:

> x
[1] "01" "201" "01"
Run Code Online (Sandbox Code Playgroud)

我在努力:

> ifelse(substr(x, 1, 1) == y, sub(substr(x, 1, 1), ""), x)
Run Code Online (Sandbox Code Playgroud)

我知道这是错误的,虽然不直观 - sub需要一个模式作为第一个参数而不会采取substr.

还尝试过:

> ifelse(substr(x, 1, 1) == y, substr(x, 1, 1) <- "", x)
[1] ""    "201" ""  
Run Code Online (Sandbox Code Playgroud)

我引用了这个R:我怎样才能代替字符串中的第5个元素?并使用以下方法解决

ifelse(substr(x, 1, 1) == y, paste(substr(x, 2, nchar(x))), x)
Run Code Online (Sandbox Code Playgroud)

想知道是否有更好的方法吗?

string substring r

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

文本挖掘中的getText函数是什么?它从何而来?[r]

我正在跟踪Nathan Dannerman和Richard Heimann撰写的来自R的Social Media Mining中的文本挖掘示例:The Book。使用拉鸣叫后searchTwitter的功能,笔者采用sapplylist提取这样的文字部分:

rstats <- searchTwitter("#rstats", n = 1000)

rstats_list <- sapply(rstats, function (x) x$getText())

整齐地制作一个字符矢量,其中仅包含来自推文的文本部分。什么是getText()?我在任何地方都找不到任何东西-作者没有充分解释。我看了看tm包装文件-什么都没有!我在SO上寻找与此相关的问题- 从推文中获取文本回答者在问与我相同的问题。在Inside-R中,我发现了这一点:http : //www.inside-r.org/r-doc/base / gettext,但与getText。有人可以解释我所缺少的吗?

twitter r text-mining tm

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

考虑到数据的子集,如何获得每个数据帧行的百分位数值?

我有一个包含145个rowns和1000多列的数据框.

对于每一行,我想提取第95百分位数的值,但仅计算大于或等于1的数据.

考虑到所有数据,我设法计算每一行的值,如下所示:

p95.obs <- apply(obs,1,quantile,probs=c(.95))
Run Code Online (Sandbox Code Playgroud)

包括我尝试的大于选项

p95.obs <- apply(obs>=1,1,quantile,probs=c(.95))
Run Code Online (Sandbox Code Playgroud)

但是这样我每行只获得1.

r quantile dataframe

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

对于每一行,返回最小值的列名称 - pandas

我试图找到pandas相当于这个问题.

对于每一行,返回最大值的列名

我想在下面的数据框中添加一个新列,这是每行中最低值的列名.

   Multi-Use  Charging  Performer  Controls  Value for Money  All Rounder
0   1.569541  0.290916   2.396734  0.881500         3.171563     1.950175
1   0.906542  2.296172   0.162809  1.604936         0.730633     0.532835
2   0.442924  0.970764   1.264364  0.295140         2.034826     0.824529
3   0.167663  1.367973   0.877306  0.683562         1.653964     0.444136
4   0.870290  0.547844   1.703054  0.209975         2.476787     1.260371
Run Code Online (Sandbox Code Playgroud)

得到min很简单: df.iloc[:, 0:6].min(axis=1)

如何根据min返回列名?

python dataframe pandas

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

根据前一列中的大于或小于条件,向 R 中的数据框添加一列

一个非常基本的问题。我有一个包含 14 个变量和 576 个观察值的数据框。

>  head(Boston)
     crim zn indus chas   nox    rm  age    dis rad tax ptratio  black lstat medv
1 0.00632 18  2.31    0 0.538 6.575 65.2 4.0900   1 296    15.3 396.90  4.98 24.0
2 0.02731  0  7.07    0 0.469 6.421 78.9 4.9671   2 242    17.8 396.90  9.14 21.6
3 0.02729  0  7.07    0 0.469 7.185 61.1 4.9671   2 242    17.8 392.83  4.03 34.7
4 0.03237  0  2.18    0 0.458 6.998 45.8 6.0622   3 222    18.7 394.63  2.94 …
Run Code Online (Sandbox Code Playgroud)

r calculated-columns conditional-statements dataframe

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

从文本向量 r 中删除多个模式

我想从多个字符向量中删除多个模式。目前我要去:

a.vector <- gsub("@\\w+", "", a.vector)
a.vector <- gsub("http\\w+", "", a.vector)
a.vector <- gsub("[[:punct:]], "", a.vector)
Run Code Online (Sandbox Code Playgroud)

等等等等

这很痛苦。我正在看这个问题和答案:R: gsub, pattern = vector and replacement = vector但它没有解决问题。

themapply和 themgsub都没有工作。我做了这些载体

remove <- c("@\\w+", "http\\w+", "[[:punct:]]")
substitute <- c("")
Run Code Online (Sandbox Code Playgroud)

既不mapply(gsub, remove, substitute, a.vector)也不mgsub(remove, substitute, a.vector) worked.

a.vector 看起来像这样:

[4951] "@karakamen: Suicide amongst successful men is becoming rampant. Kudos for staing the conversation. #mental"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
[4952] "@stiphan: you are phenomenal.. #mental #Writing. httptxjwufmfg"   
Run Code Online (Sandbox Code Playgroud)

我想要:

[4951] "Suicide …
Run Code Online (Sandbox Code Playgroud)

r vector gsub mapply

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

Dumb rbind for data.frames of different length

我不需要任何的智能 rbind,如rbindlist,rbind.fill,bind_row等.

我需要一个哑巴rbind才能简单地绑定两个数据帧:

> a <- data.frame(a = 1:3)
> b <- data.frame(b = 1:2)

> some.magic.bind(a, b) # what function to use here?

   a  b
1  1 1
2  2 2
3  3 NA
Run Code Online (Sandbox Code Playgroud)

r dataframe cbind

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

xlsxwriter - Excel饼图的图例 - python

我有一个带有6个选项卡(工作表)的excel文件.每个工作表具有相同的结构并包含两列 - Col 1包含品牌名称,Col 2包含与每个品牌对应的值.对于excel文件中的每个工作表,我想制作一个饼图,显示每个品牌的%份额.

这个例子XLS文件,你可以用它来运行该脚本上是这里

我写的代码非常简单,并生成图表.问题是图表的图例采用序列号名称而不是品牌名称.

import pandas as pd
import xlsxwriter as excel

       df = pd.read_excel("/Users/jack/Documents/python-pptx/filename", sheetname=None)


        workbook = excel.Workbook('/Users/jack/Documents/python-pptx/chart_pie.xlsx')

        for sheetname, data in df.iteritems():
            if len(data) > 0: 
                worksheet = workbook.add_worksheet(sheetname)
                chart = workbook.add_chart({'type': 'pie'})
                worksheet.write_column('A1', data['Brand'])
                worksheet.write_column('B1', data['Share_of_interactions'])
                chart.add_series({'categories': '='+sheetname+'!$A$1:$A$'+str(len(data)),
                                  'values':     '='+sheetname+'!$B$1:$B$'+str(len(data)),
                                  'name':       '='+sheetname+'!$A$1:$A$'+str(len(data))})

                ## insert chart into the worksheet
                worksheet.insert_chart('C3', chart)

                ## Close the workbook
        workbook.close()
Run Code Online (Sandbox Code Playgroud)

这是图表的屏幕截图:

在此输入图像描述

如果您在图表中注意到图例中的1,2,3 .. .7.它实际应该是品牌名称.我已经添加了名称参数chart.add_series作为文档中提到的xlsxwriter- http://xlsxwriter.readthedocs.io/chart.html.任何帮助将非常感激.

python excel pandas xlsxwriter

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

正则表达式删除r中的.csv

这将是愚蠢的.

我有一个字符串:

word <- "dirtyboards.csv" 
Run Code Online (Sandbox Code Playgroud)

我想删除csv部分并获得"脏板".

我在尝试:

require(stringr)
str_extract(word, ".*[^.csv]")
Run Code Online (Sandbox Code Playgroud)

我得到了回报:"脏板".".csv"之前的"s"丢失了.

我知道我能做到

gsub(".csv", "", word)

regex r stringr

0
推荐指数
2
解决办法
918
查看次数