为什么不列出我的列表数据结构导致不同的长度?列表的长度是13951.未列出结果的长度是13654.没有NULL或没有NA.
> class(price)
[1] "list"
> head(price)
$`570`
[1] 0
$`440`
[1] 0
$`730`
[1] 1499
$`304930`
[1] 0
$`550`
[1] 1999
$`230410`
[1] 0
length(names(price)) # 13951
length(price) # 13951
length(unlist(price)) # 13654
> sum(is.na(price))
[1] 0
> sum(is.null(price))
[1] 0
Run Code Online (Sandbox Code Playgroud)
如何确保unlist长度与列表长度相同?
- 下面的解决方案:
> out <- do.call(c, lapply(price, (function(x) {
+ if (is.null(x)) {NA} else { x }
+ })))
> length(out) #2
[1] 13654
> table(sapply(price, class))
numeric
13951
Run Code Online (Sandbox Code Playgroud) 我正在处理一个大型数据集,但让我们举一个简单的例子来演示我想要实现的目标。我正在使用R和dplyr。我有一张桌子:
id attribute correct
1 a a
1 b a
1 c a
2 d e
2 e e
3 d f
Run Code Online (Sandbox Code Playgroud)
从上面,我想创建两列,attribute_set和label。为了澄清,我想要:
id attribute_set correct label
1 a, b, c a 1
2 d, e e 1
3 d f 0
Run Code Online (Sandbox Code Playgroud)
attribute_set应该是一个具有所有属性的集合(任何数据结构)id。label如果正确的值应为 1,attribute_set否则应为 0。
目前,我attribute_set像这样创建:
design_mat1 <- design_mat %>%
group_by(id) %>%
mutate(attribute_set = paste(unique(attribute), collapse = "|")) %>%
select(-attribute)
Run Code Online (Sandbox Code Playgroud)
我label像这样生成: …
我有300万行的.txt文件。该文件包含如下数据:
# RSYNC: 0 1 1 0 512 0
#$SOA 5m localhost. hostmaster.localhost. 1906022338 1h 10m 5d 1s
# random_number_ofspaces_before_this text $TTL 60s
#more random information
:127.0.1.2:https://www.spamhaus.org/query/domain/$
test
:127.0.1.2:https://www.spamhaus.org/query/domain/$
.0-0m5tk.com
.0-1-hub.com
.zzzy1129.cn
:127.0.1.4:https://www.spamhaus.org/query/domain/$
.0-il.ml
.005verf-desj.com
.01accesfunds.com
Run Code Online (Sandbox Code Playgroud)
我试图解析它,使其看起来像:
+--------------------+--------------+-------------+-----------------------------------------------------+
| domain_name | period_count | parsed_code | raw_code |
+--------------------+--------------+-------------+-----------------------------------------------------+
| test | 0 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-0m5tk.com | 2 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-1-hub.com | 2 | 127.0.1.2 | :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .zzzy1129.cn | 2 | …Run Code Online (Sandbox Code Playgroud) 以下两个表达式之间是否存在功能差异?结果对我来说看起来一样,但很好奇是否有未知的未知数。该$符号表示什么/如何读取?
df1.orderBy($"reasonCode".asc).show(10, false)
df1.orderBy(asc("reasonCode")).show(10, false)
Run Code Online (Sandbox Code Playgroud) 我已经构建了一个KMeansModel.我的结果存储在一个名为的PySpark DataFrame中
transformed.
(a)我如何解释内容transformed?
(b)如何创建一个或多个Pandas DataFrame transformed,以显示14个集群中每个集群的13个特征中每个特征的摘要统计数据?
from pyspark.ml.clustering import KMeans
# Trains a k-means model.
kmeans = KMeans().setK(14).setSeed(1)
model = kmeans.fit(X_spark_scaled) # Fits a model to the input dataset with optional parameters.
transformed = model.transform(X_spark_scaled).select("features", "prediction") # X_spark_scaled is my PySpark DataFrame consisting of 13 features
transformed.show(5, truncate = False)
+------------------------------------------------------------------------------------------------------------------------------------+----------+
|features |prediction|
+------------------------------------------------------------------------------------------------------------------------------------+----------+
|(14,[4,5,7,8,9,13],[1.0,1.0,485014.0,0.25,2.0,1.0]) |12 |
|(14,[2,7,8,9,12,13],[1.0,2401233.0,1.0,1.0,1.0,1.0]) |2 |
|(14,[2,4,5,7,8,9,13],[0.3333333333333333,0.6666666666666666,0.6666666666666666,2429111.0,0.9166666666666666,1.3333333333333333,3.0])|2 |
|(14,[4,5,7,8,9,12,13],[1.0,1.0,2054748.0,0.15384615384615385,11.0,1.0,1.0]) |11 |
|(14,[2,7,8,9,13],[1.0,43921.0,1.0,1.0,1.0]) |1 |
+------------------------------------------------------------------------------------------------------------------------------------+----------+
only showing top 5 rows
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我从另一篇SO帖子中发现,我可以将功能映射到他们的名字,如下所示.在一个或多个Pandas数据帧中为每个集群的每个特征提供汇总统计(平均值,中值,标准,最小值,最大值)会很不错. …
cluster-analysis machine-learning k-means pyspark apache-spark-ml
我的目标是获得一个列表对象:['assetCode', 'assetName'],其中的内容是Panda.series根据多个条件检索到的标签。我试过:
tmp3 = datatype[datatype == 'object' | datatype == 'category'].index # extract label from Pandas.series
Run Code Online (Sandbox Code Playgroud)
这给出了错误: TypeError: cannot compare a dtyped [object] array with a scalar of type [bool]
然而,虽然不太优雅,但我能够找到以下两个可行的解决方案:
tmp2 = datatype[datatype == 'object'].index # extract label from Pandas.series
tmp2[0]
'assetCode'
tmp1 = datatype[datatype == 'category'].index # extract label from Pandas.series
tmp1[0]
'assetName'
Run Code Online (Sandbox Code Playgroud)
如何将这两个字符串组合成一个列表对象?有没有比我尝试的方式更好的方法来实现这个目标?
我正在尝试将data.table数据表对象中的字符列转换为因子列。我可以做:
df$a <- as.factor(df$a)
Run Code Online (Sandbox Code Playgroud)
虽然这似乎有效,但它也给出了一个错误:
Warning messages:
1: Unknown or uninitialised column: 'a'.
Run Code Online (Sandbox Code Playgroud)
上述问题似乎并不少见。对此进行了探索,但仍未解决: 修复多个警告“未知列”。看来dplyr改变列类型的基础解决方案是最好的。这就是我正在努力做的事情。让我们看一个玩具示例。
假设我有一个data.table df:
names(df)
[1] "a" "b" "c"
[4] "d" "e" "f"
Run Code Online (Sandbox Code Playgroud)
我尝试:
df %>% mutate_at(.vars = vars(a),
.funs = funs(factor))
Run Code Online (Sandbox Code Playgroud)
但我得到:
Error in overscope_eval_next(overscope, expr) : object 'a' not found
Run Code Online (Sandbox Code Playgroud)
为什么找不到对象“a”以及如何修复它?
另一个解决方案的参考mutate_at:dplyr更改许多数据类型
仅供参考,这是我的 sessionInfo()
sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default …Run Code Online (Sandbox Code Playgroud) 我收到一条错误,说我的标签必须在[0,1]中:
> system.time(xgb <- xgboost(params = param,
+ data = dtrain,
+ label = as.numeric(train.label),
+ nrounds = 500,
+ print_every_n = 100,
+ verbose = 1))
Error in xgb.iter.update(bst$handle, dtrain, iteration - 1, obj) :
[10:39:29] amalgamation/../src/objective/regression_obj.cc:108: label must be in [0,1] for logistic regression
Timing stopped at: 0.11 0 0.11
Run Code Online (Sandbox Code Playgroud)
但是,我的标签是[0,1]:
> train.label
[1] 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 …Run Code Online (Sandbox Code Playgroud) 如何使用以下字符串中的正则表达式仅提取数字:
+1 Ab_Cd- 001 234.txt`
Run Code Online (Sandbox Code Playgroud)
这样我就回来了:
1001234
Run Code Online (Sandbox Code Playgroud)
我有一个带有这种字符串向量的数据框.我正在尝试在R和Python中执行上述操作.我更熟悉R stringr和gsub()来自base.我已经尝试了多个表达式,但无法获得任何效果良好的表达式.