这是Stata在一步中处理的数据分析中的基本问题.
使用时间不变数据(x0)和2000年和2005年的时变数据(x1,x2)创建一个宽数据框:
d1 <- data.frame(subject = c("id1", "id2"),
x0 = c("male", "female"),
x1_2000 = 1:2,
x1_2005 = 5:6,
x2_2000 = 1:2,
x2_2005 = 5:6
)
Run Code Online (Sandbox Code Playgroud)
ST
subject x0 x1_2000 x1_2005 x2_2000 x2_2005
1 id1 male 1 5 1 5
2 id2 female 2 6 2 6
Run Code Online (Sandbox Code Playgroud)
我想像面板一样塑造它,所以数据看起来像这样:
subject x0 time x1 x2
1 id1 male 2000 1 1
2 id2 female 2000 2 2
3 id1 male 2005 5 5
4 id2 female 2005 6 6
Run Code Online (Sandbox Code Playgroud)
我可以用reshape
st 做到这一点 …
我目前正在开发一个项目,我正在处理相当数量的JSON数据,这些数据被向后和向前传输并由浏览器存储为javascript对象列表.例如:
person: {
// Primary Key
key: "id",
// The actual records
table: {
"1": {id: 1, name: "John", surname: "Smith", age: 26},
"2": {id: 2, name: "Mary", surname: "Brown", age: 19},
// etc..
},
indexes: {
// Arrays of pointers to records defined above
"name": [
{id: 89, name: "Aaron", surname: "Jones", age: 42},
// etc..
]
}
Run Code Online (Sandbox Code Playgroud)
我发现自己编写了各种索引和排序算法来有效地操作这些数据,我开始认为这种事情必须在以前完成.
我有使用Ext.data.Store和Ext.data.Record对象来执行这种数据操作的经验,但我认为它们对于初级开发人员而言过于复杂,而我正在开发的项目是一个小型移动应用程序,其中我们不能只为它添加一个300K +库,所以我需要一些非常小的东西.
任何想法,如果有一个Javascript JSON操作框架具有以下内容:
我知道如何使用Python从数据框中删除列.但是对于我的问题,数据集很大,我想要删除的列被组合在一起,或者基本上是在列标题轴上单独展开.是否有一种更短的方法来切割或删除所有列的代码行数较少,而不是像我所做的那样将其写出来.我在这里的方式是有效的,但我想要一个更加总结的方式.
flight_data_copy_final是应该存储它的变量.
提前致谢
这是我的代码:
from IPython.display import display
flight_data_copy_version1 = flight_data_copy.drop(flight_data_copy.ix[:,"Year": "FlightDate"].columns, axis=1)
flight_data_copy_version2 = flight_data_copy_version1.drop("TailNum", axis=1)
flight_data_copy_version3 = flight_data_copy_version2.drop("OriginStateFips", axis=1)
flight_data_copy_version4 = flight_data_copy_version3.drop("DestStateFips", axis=1)
flight_data_copy_version5 = flight_data_copy_version4.drop("Diverted", axis=1)
flight_data_copy_version6 = flight_data_copy_version5.drop("Flights", axis=1)
flight_data_copy_final = flight_data_copy.drop(flight_data_copy_version6.ix[:,"FirstDepTime":].columns, axis=1)
print (display (flight_data_copy_final))
Run Code Online (Sandbox Code Playgroud) 我将与您分享我的庞大数据集的简化版本.这个简化版本完全尊重我原始数据集的结构,但包含的列表元素,数据框,变量和观察结果比原始数据集少.
根据对这个问题的最热烈回答:如何制作一个很好的R可重复的例子?,我使用输出共享我的数据集,通过dput(query1)
在R控制台中复制/粘贴以下代码块,为您提供可立即在R中使用的内容:
structure(list(plu = structure(list(year = structure(list(id = 1:3,
station = 100:102, pluMean = c(0.509068994778059, 1.92866478959912,
1.09517453602154), pluMax = c(0.0146962179957886, 0.802984389130343,
2.48170762478472)), .Names = c("id", "station", "pluMean",
"pluMax"), row.names = c(NA, -3L), class = "data.frame"), month = structure(list(
id = 1:3, station = 100:102, pluMean = c(0.66493845927034,
-1.3559338786041, 0.195600637750077), pluMax = c(0.503424623872161,
0.234402501255681, -0.440264545434053)), .Names = c("id",
"station", "pluMean", "pluMax"), row.names = c(NA, -3L), class = "data.frame"),
week = structure(list(id = 1:3, station = 100:102, …
Run Code Online (Sandbox Code Playgroud) 我不知道如何更换NA
与其他列的值以s列中的R
使用dplyr
.MWE在下面.
Letters <- LETTERS[1:5]
Char <- c("a", "b", NA, "d", NA)
df1 <- data.frame(Letters, Char)
df1
library(dplyr]
df1 %>%
mutate(Char1 = ifelse(Char != NA, Char, Letters))
Letters Char Char1
1 A a NA
2 B b NA
3 C <NA> NA
4 D d NA
5 E <NA> NA
Run Code Online (Sandbox Code Playgroud) 我有一个df
Id Event SeqNo
1 A 1
1 B 2
1 C 3
1 ABD 4
1 A 5
1 C 6
1 A 7
1 CDE 8
1 D 9
1 B 10
1 ABD 11
1 D 12
1 B 13
1 CDE 14
1 A 15
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种模式"ABD后跟CDE而它们之间没有事件B"例如,这个df的输出将是:
Id Event SeqNo
1 ABD 4
1 A 5
1 C 6
1 A 7
1 CDE 8
Run Code Online (Sandbox Code Playgroud)
对于单个ID,可以多次遵循此模式,我想查找所有这些ID的列表及其各自的计数(如果可能).
是否可以从windows命令行中提取下表中的第5列(某些内容如unix cut命令)
chrome.exe 512 Console 0 73,780 K
chrome.exe 800 Console 0 11,052 K
chrome.exe 1488 Console 0 92,720 K
chrome.exe 1600 Console 0 32,344 K
chrome.exe 2240 Console 0 35,132 K
chrome.exe 2360 Console 0 21,276 K
chrome.exe 3524 Console 0 66,732 K
chrome.exe 3924 Console 0 23,524 K
Run Code Online (Sandbox Code Playgroud)
以上内容存储在文件中.
我希望'压扁'我的数据集以便于数据挖掘.每个分类列应更改为多个布尔列.我有一个具有分类值的列,例如:
ID col1
1 A
2 B
3 A
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来转动这个表,并有一个聚合函数告诉我这个ID是否有值A或B:
结果:
ID col1A col1B
1 1 0
2 0 1
3 1 0
Run Code Online (Sandbox Code Playgroud)
我尝试使用PIVOT,但不知道在其中使用哪个聚合函数.
也寻找SF的答案,但找不到任何...
我正在使用MS-SQL 2012.
任何帮助,将不胜感激!奥马里
编辑:
col1中的类别数量未知,因此解决方案必须是动态的.谢谢 :)
我有以下结构的数据:
x <- read.table(header=T, text="
X Y D S
a e 1 10
a e 2 20
a f 1 50
b c 1 40
b c 2 30
b c 3 60
b d 1 10
b d 2 20")
Run Code Online (Sandbox Code Playgroud)
我希望得到以下结果:
X Y 1 2 3
a e 10 20
a f 50
b c 40 30 60
b d 10 20
Run Code Online (Sandbox Code Playgroud)
对于列的每个组合X
和Y
我想转列数据S
的顺序列D
.
我认为xtabs()
会有用,但我不这么认为,我最好的版本是:
xtabs(formula=S~Y+D,data=x)
Run Code Online (Sandbox Code Playgroud)
结果如下:
D
Y 1 …
Run Code Online (Sandbox Code Playgroud) 我做了以下事情
library(data.table)
library(stringr)
dt <- data.table(string_column = paste(sample(c(letters, " "), 500000, replace = TRUE)
, sample(c(letters, " "), 500000, replace = TRUE)
, sample(1:500000)
, sep = " "), key = "string_column")
split_res <- dt[, list(name = unlist(str_split(string_column, '\\s+'))), by = string_column]
Run Code Online (Sandbox Code Playgroud)
对于真实数据,它需要大约.1小时处理dt
(10M行)并创建split_res
(18M行)出于好奇 - 有没有办法加快进程?也许unlist + str_split
这不是正确的方法吗?