我有一个广泛的调查数据集.对于特定问题,在原始数据中创建了一组变量,以表示在特定月份询问调查问题的事实.
我希望创建一组具有月不变名称的新变量; 这些变量的值将对应于观察到的月份的月变量问题的值.
请参阅示例/虚构数据集:
require(data.table)
data <- data.table(month = rep(c('may', 'jun', 'jul'), each = 5),
may.q1 = rep(c('yes', 'no', 'yes'), each = 5),
jun.q1 = rep(c('breakfast', 'lunch', 'dinner'), each = 5),
jul.q1 = rep(c('oranges', 'apples', 'oranges'), each = 5),
may.q2 = rep(c('econ', 'math', 'science'), each = 5),
jun.q2 = rep(c('sunny', 'foggy', 'cloudy'), each = 5),
jul.q2 = rep(c('no rain', 'light mist', 'heavy rain'), each = 5))
Run Code Online (Sandbox Code Playgroud)
在这项调查中,实际上只有两个问题:"q1"和"q2".这些问题中的每一个都被反复询问了几个月.但是,仅当数据中观察到的月份与特定月份的调查问题匹配时,观察才包含有效响应.
例如:对于"May"中的任何观察,"may.q1"被观察为"是".我想要一个新的"Q1"变量来表示"may.q1","jun.q1"和"jul.q1".当月份为"可能"时,"Q1"的值将取"may.q1"的值,而当月份为"jun"时,"Q1"的值将取值"jun.q1"的值.
如果我尝试使用数据表手动执行此操作,我想要的是:
mdata <- data[month == 'may', c('month', 'may.q1', 'may.q2'), with = F] …Run Code Online (Sandbox Code Playgroud) 使用大型数据集进行一些数据争论.该数据具有"日期"字段,该字段在诸如"1370039735000"和"2013年5月16日"之类的格式之间随机切换.到目前为止,我已将其他日期字段转换为其中之一
new Date("May 16, 2013")
Run Code Online (Sandbox Code Playgroud)
要么
new Date(NumberLong(1370039735000))
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式或其他方法区分两者之间的区别?我正在使用MongoDB,但它都是Javascript.
我正在使用openrefine来清理excel数据集.我有大约70个操作,我一直在剪切和粘贴不同的数据集.我保持记录ID并导出到新的Excel工作表.然后我使用记录ID重新加载工作表.
它运行良好,但即使只有少数记录发生变化,我也必须重新加载整个数据库.是否有一种简单的方法来标记更改的记录,因此我只将已更改的记录导出/导入应用程序?
我可以轻松地在70个操作中添加标记以仅标记已更改的记录吗?
我有一个从雅虎财经抓取的股票数据,调整后的收盘数据不知何故是错误的。
adj_close close ratio
date
2014-10-16 240.4076 2466.40 0.097473
2014-10-17 245.8173 2521.90 0.097473
2014-10-20 250.4522 2569.45 0.097473
2014-10-21 251.8850 2584.15 0.097473
2014-10-22 251.0175 2575.25 0.097473
2014-10-23 251.3392 2578.55 0.097473
2014-10-27 253.2155 2597.80 0.097473
2014-10-28 258.9616 2656.75 0.097473
2014-10-29 257.6944 2643.75 0.097473
2014-10-30 257.1339 2638.00 0.097473
2014-10-31 26.3450 2702.80 0.009747
2014-11-03 26.5463 2723.45 0.009747
2014-11-05 27.1160 2781.90 0.009747
2014-11-07 26.7320 2742.50 0.009747
2014-11-10 26.7027 2739.50 0.009747
Run Code Online (Sandbox Code Playgroud)
以下是调整后的收盘数据图:

如何使用插值等方法替换这样的数据?
我试图从数据框中仅选择因子列。示例如下:
bank[,apply(bank[,names(bank)!="id"], is.factor)]
Run Code Online (Sandbox Code Playgroud)
但代码的行为很奇怪。一步步:
sapply(bank[,names(bank)!="id"], is.factor)
Run Code Online (Sandbox Code Playgroud)
我得到:
age sex region income married children car
FALSE TRUE TRUE FALSE TRUE FALSE TRUE
save_act current_act mortgage pep ageBin
TRUE TRUE TRUE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
看起来不错。现在,我假设我只是将这个 TRUE/FALSE 矩阵传递到下一步并仅获取我需要的列:
bank[,sapply(bank[,names(bank)!="id"], is.factor)]
Run Code Online (Sandbox Code Playgroud)
但结果我得到了与原始银行数据框中相同的列。什么都没有被过滤掉。我以一种或另一种方式尝试过,但找不到解决方案。对我做错了什么有什么建议吗?
我想删除主题标签符号 ( '#') 和分隔单词 ( '_') 的下划线
例子: "this tweet is example #key1_key2_key3"
我想要的结果: "this tweet is example key1 key2 key3"
我的代码使用字符串:
#Remove punctuation , # Hashtag Symbol
translate_table = dict((ord(char), None) for char in string.punctuation)
cleaned_combined_tweets.translate(translate_table)
Run Code Online (Sandbox Code Playgroud)
这给出了结果: "this tweet is example key1key2key3"
我试图计算每个球员的进球数,助攻数和助攻数.我的问题是我无法理解这一点,因为我想通过(玩家名称)总结的数据列在三个变量(目标,主辅助和辅助辅助)中
这是我可重复的数据(它是来自dput(),所以为混乱道歉).
mydata <- structure(list(primary_assist = c("Dmitry Gilyazitdinov", "Evgeny Orlov",
"Anton Burdasov", "Sergei Kalinin", "Stanislav Solovyov", "Vasily Streltsov",
NA, "Bogdan Potekhin", "Bogdan Potekhin", "Vasily Streltsov",
"Vasily Streltsov", "Viktor Postnikov", "Danil Kaskov", NA, NA,
"Artemy Panarin"), secondary_assist = c("Andrei Badrutdinov",
NA, NA, NA, "Danil Gubarev", "Nikita Manukhov", NA, "Evgeny Grigorenko",
"Daniil Apalkov", "Ivan Boiko", NA, "Viktor Antipin", "Vitaly Sychov",
NA, NA, "Stanislav Levin"), goal = c("Vitaly Kropachyov", "Dmitry Kozlov",
"Stanislav Solovyov", "Kirill Polyansky", "Anton Burdasov", "Ilya Solodov",
"Alexander Antropov", …Run Code Online (Sandbox Code Playgroud) 我正在做一个研究项目,并且输入的表格中的一种还不太适合分析,因此我试图对其进行重组。当前,每一行都是考生,每一列都是他们错误回答的问题,以升序输入。因此,对于第一行,条目可以分别读取第一,第二和第三列的“ Q1”,“ Q3”,“ Q9”等。总共有25个问题。
我的目标是重组数据,以便每个问题都有一列。如果考生正确回答了该问题,则相应列的条目为1,否则为0。
有一种蛮力的方法似乎起作用。可以分别更改每列并检查每列中的每个值。但是,这里有25个问题,所有这些键入似乎效率都很低,所以我怀疑必须有更好的方法。
暴力代码如下所示:
df %>%
mutate(Q3 == ifelse(col1 == "Q3" | col2 == "Q3" | col3 == "Q3", 0, 1))
Run Code Online (Sandbox Code Playgroud)
在这里,col1,col2,col3都是可能包含Q3的所有列,这可能是测试者出错的问题。如果其中有一个,我们输入0。否则,我们输入1。
有25个问题,代码变得太长。
编辑:数据框的示例如下所示。
sample <- "ID Col1 Col2 Col3 Col4
1 100 Q1
2 101 Q3 Q4
3 102 Q2 Q3 Q4
4 103
5 104 Q4
6 105 Q1 Q2 Q3 Q4 "
Run Code Online (Sandbox Code Playgroud)
所需的输出如下:
sample <- "ID Q1 Q2 Q3 Q4
1 100 0 1 1 1
2 101 1 1 0 0
3 102 …Run Code Online (Sandbox Code Playgroud) 我正在尝试旋转一个包含标题和副标题的表格,以便标题进入“日期”列,并且副标题是两列而不是重复。
这是我的数据的示例。
这是使用 生成的dput(),因此在原始 Excel 文件中,每个日期都跨越两个子标题(“蓝色”和“绿色”),在 R 中,这些空白单元格被重新命名为 X.1、X.2、 ETC。
table <- " X X.1 X02.Jul.12 X.2 X03.Jul.12 X.3 X04.Jul.12 X.4
1 category number blue green blue green blue green
2 G 1 1 0 1 0 1 0
3 G 2 2 99 2 99 1 99
4 G 3 1 1 1 99 1 99
5 G 4 1 1 1 1 2 99
6 G 5 1 0 1 0 1 99
7 G 6 …Run Code Online (Sandbox Code Playgroud) 我正在处理患者信息数据集,并尝试使用 MATLAB 根据数据计算倾向得分。删除具有许多缺失值的特征后,我仍然留下几个缺失(NaN)值。
当我尝试使用以下 Matlab 代码(来自 Andrew Ng 的 Coursera 机器学习课程)执行逻辑回归时,由于这些缺失值,我会遇到错误,因为我的成本函数和梯度向量的值变为 NaN:
[m, n] = size(X);
X = [ones(m, 1) X];
initial_theta = ones(n+1, 1);
[cost, grad] = costFunction(initial_theta, X, y);
options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
Run Code Online (Sandbox Code Playgroud)
注意:sigmoid 和 costfunction 是我为整体易用性而创建的工作函数。
如果我将所有 NaN 值替换为 1 或 0,则可以顺利执行计算。但是我不确定这是否是处理此问题的最佳方法,而且我也想知道我应该选择(通常)什么替换值获得使用缺失数据执行逻辑回归的最佳结果。使用特定数字(0 或 1 或其他数字)替换数据中所述缺失值有什么好处/缺点吗?
注意:我还将所有特征值标准化为 0-1 范围内。
对于这个问题的任何见解都将受到高度赞赏。谢谢
machine-learning nan missing-data logistic-regression data-cleaning
data-cleaning ×10
r ×5
dataframe ×2
dplyr ×2
python ×2
data-science ×1
data.table ×1
date ×1
javascript ×1
missing-data ×1
nan ×1
opendata ×1
openrefine ×1
pandas ×1
pivot ×1
pivot-table ×1
plyr ×1
regex ×1
tidyr ×1