小编Mic*_*hal的帖子

将列添加到R中的空数据框

我已经广泛搜索但没有在Stack Overflow上找到这个问题的答案.

假设我有一个数据框a.

我定义:

a <- NULL
a <- as.data.frame(a)
Run Code Online (Sandbox Code Playgroud)

如果我想为此数据框添加一列,如下所示:

a$col1 <- c(1,2,3)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in `$<-.data.frame`(`*tmp*`, "a", value = c(1, 2, 3)) : 
    replacement has 3 rows, data has 0
Run Code Online (Sandbox Code Playgroud)

为什么行维度固定但列不是?

如何更改数据框中的行数?

如果我这样做(首先将数据输入列表然后转换为df),它可以正常工作:

a <- NULL
a$col1 <- c(1,2,3)
a <- as.data.frame(a)
Run Code Online (Sandbox Code Playgroud)

row r list dataframe

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

如何在Spark中收集单个列?

我想对单个列执行操作.不幸的是,在我转换该列之后,它现在不再是它来自的数据帧的一部分,而是一个Column对象.因此,它无法收集.

这是一个例子:

df = sqlContext.createDataFrame([Row(array=[1,2,3])])
df['array'].collect()
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'Column' object is not callable
Run Code Online (Sandbox Code Playgroud)

如何collect()在单个列上使用该功能?

dataframe apache-spark apache-spark-sql pyspark

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

安装PySpark

我正在尝试安装PySpark并按照说明从我安装Spark的群集节点上的命令行运行它:

$ sbt/sbt assembly
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

-bash: sbt/sbt: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试下一个命令:

$ ./bin/pyspark
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

-bash: ./bin/pyspark: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些基本的东西.缺什么?我安装了spark并且能够使用以下命令访问它:

$ spark-shell
Run Code Online (Sandbox Code Playgroud)

我在节点上有python,并且能够使用以下命令打开python:

$ python
Run Code Online (Sandbox Code Playgroud)

python install apache-spark

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

打开存储在HDFS中的文件以在VI中编辑

我想使用VI直接在HDFS中编辑文本文件,而不必将其复制到本地,编辑它然后从本地复制回来.这可能吗?

编辑:这在Cloudera的Hue UI中曾经是可能的,但不再是这种情况.

vi ubuntu hadoop hdfs

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

将数据框架中的新派生列从布尔值转换为整数

假设我有一个x带有此架构的DataFrame :

xSchema = StructType([ \
    StructField("a", DoubleType(), True), \
    StructField("b", DoubleType(), True), \
    StructField("c", DoubleType(), True)])
Run Code Online (Sandbox Code Playgroud)

然后我有DataFrame:

DataFrame[a :double, b:double, c:double]
Run Code Online (Sandbox Code Playgroud)

我想有一个整数派生列.我能够创建一个布尔列:

x = x.withColumn('y', (x.a-x.b)/x.c > 1)
Run Code Online (Sandbox Code Playgroud)

我的新架构是:

DataFrame[a :double, b:double, c:double, y: boolean]
Run Code Online (Sandbox Code Playgroud)

但是,我希望列y包含0表示False,1表示True表示.

cast功能只能在列上操作,而不能在a上操作,DataFrame并且该withColumn功能只能在a上运行DataFrame.如何添加新列并同时将其转换为整数?

python apache-spark apache-spark-sql pyspark pyspark-sql

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

在R中寻找Box-Cox变换的最优Lambda

我试图在R中的向量中转换数据

这不适用于线性回归,因此我没有预测器和响应关系.我只是使用一个模型,通过规范化我的数据来提高准确性.(因此我不能使用boxcox函数,因为它只适用于线性模型).

我试图改造的数据是:

vect
 [1]  99.64  49.71 246.84  96.17  16.67 352.00 421.25  81.77 105.00  37.85
Run Code Online (Sandbox Code Playgroud)

我看过这篇文章.

目前还不清楚正在做什么以及如何使用优化功能但是我确实设法修改了函数以创建一个我想最小化的函数.

xskew <- function(data,par) {
abs(skewness((data^par-1)/par)) }
Run Code Online (Sandbox Code Playgroud)

我想为lambda输入一系列值(可能介于0.5和1之间,跳数为0.01),并找到这些值中的哪一个最小化我的数据集的xskew.

我试过用optim函数做这个,但没有运气,所以我不认为这对我来说可能是正确的功能.我该如何进行此计算?

编辑:我想要的是:

 x <- seq(0.51,0.99,by=0.01)
 which(xskew(vect,x) < 0.05)
Run Code Online (Sandbox Code Playgroud)

所以也许我会在某个门槛下找到一个值.此代码显然会产生错误.

optimization r normalization

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

从没有devtools的github安装R包(由于防火墙)

我无法使用devtools从github安装R软件包,因为我有防火墙阻止R连接到互联网.

我想过从git存储库创建一个.tar.gz文件,但问题是存储库不包含MD5文件,我担心安装会在没有它的情况下失败.

我该如何安装包?

(如果重要,包是AnomalyDetection)

twitter r github r-package

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

如何使用 python 维基百科库从维基百科中提取信息框 vcard

我一直在尝试使用维基百科 python 包提取信息框内容。

我的代码如下(针对此页面):

import wikipedia
Aldi = wikipedia.page('Aldi')
Run Code Online (Sandbox Code Playgroud)

当我输入时:

Aldi.content
Run Code Online (Sandbox Code Playgroud)

我收到了文章文本,但没有收到信息框。

我尝试从 DBPedia 获取数据,但没有成功。我还尝试使用 BeautifulSoup4 提取页面,但该表的结构很奇怪(因为有一个图像跨越两列,后面跟着未命名的列。

这是我对 BeautifulSoup 的了解:

from bs4 import BeautifulSoup
import urllib2
site= "http://en.wikipedia.org/wiki/Aldi"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
print soup
Run Code Online (Sandbox Code Playgroud)

我还查看了维基数据,但它不包含我从表中需要的大部分信息。

我不一定将 python 包作为解决方案。任何可以解析该表的东西都会很棒。

最好,我想要一本包含信息框值的字典:

Type     Private
Industry Retail
Run Code Online (Sandbox Code Playgroud)

ETC...

python beautifulsoup wikipedia-api

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

使用带有变量名的聚合作为列名

我有以下数据框:

a <- c(1,1,4)
b <- c(1,0,2)
c <- data.frame(a=a,b=b)
str(c)
#  a  b
#1 1  1
#2 1  0
#3 4  2
Run Code Online (Sandbox Code Playgroud)

我想按以下方式聚合数据框 c:

aggregate(b~a,FUN=mean,data=c)
#  a   b
#1 1 0.5
#2 4 2.0
Run Code Online (Sandbox Code Playgroud)

但是,我的主要问题是我将使用变量作为列的名称

所以:

d <- 'a'
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用包含列名称的变量 d 进行聚合,显然会收到错误:

aggregate(b~d,FUN=mean,data=c)
#Error in model.frame.default(formula = b ~ d, data = c) : variable lengths differ (found for 'd')
Run Code Online (Sandbox Code Playgroud)

这可行,但我随后得到了愚蠢的列名称。我想避免重命名列的额外步骤:

aggregate(c[,'b']~c[,d],FUN=mean,data=c)
#  c[, d] c[, "b"]
#1    1      0.5
#2    4      2.0
Run Code Online (Sandbox Code Playgroud)

如何聚合并在第一次尝试时获得正确的列名称?(也许没有办法做到这一点)

aggregate r dataframe

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

用两个不同的字符拆分字符串

我有以下字符串

u'root\n |-- date: string (nullable = true)\n |-- zip: string (nullable = true)\n' 
Run Code Online (Sandbox Code Playgroud)

我想提取列名。列名|--在它们之前和:之后。

我可以分两个阶段做到这一点:

s = u'root\n |-- date: string (nullable = true)\n |-- zip: string (nullable = true)\n' 
s = s.split('|-- ')
s = s.split(':')
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有办法一次拆分两个字符。

python regex string-split

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