标签: data-manipulation

R中的自动虚拟变量

我有下面的数据框:

temp <- as.data.frame(with(uadm, table(prlo_state_code)))
Run Code Online (Sandbox Code Playgroud)

我期待创建11个虚拟变量.前10名和"其他"各1名.前10名很容易找到:

#top10
temp <- temp[order(temp$Freq, decreasing=T),]
head(temp, n=10)
Run Code Online (Sandbox Code Playgroud)

我知道R很棒,所以我假设有一个很容易自动创建(和命名)来自前10名的虚拟变量并将其余部分折叠成一个名为"其他"的最终虚拟变量.

在此先感谢任何帮助或见解.

r data-manipulation data-management

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

将长表更改为宽表

假设我有一个像这样的长表:

A <- rep(c("a","b","c","d"),each=4)
B <- rep(c("e","f","g","h"),4)
C <- rep(c("i","j"),8)
D <- rnorm(16)
df <- data.frame(A,B,C,D)
head(df)

   A  B  C        D
1  a  e  i  -0.18984508
2  a  f  j  -1.82703822
3  a  g  i  -0.17307580
4  a  h  j  -1.38104238
5  b  e  i   0.08699983
6  b  f  j  -0.36442461
Run Code Online (Sandbox Code Playgroud)

我想将长表更改为宽格式,以便A列和B列中的每个元素都是列的标题.每行应为1或0,表示元素是否存在.C列和D列保持不变.所需的表是这样的:

C           D a b e f g h
i -0.18984508 1 0 1 0 0 0
j -1.82703822 1 0 0 1 0 0
i -0.17307580 1 0 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation

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

R中面板数据中事件开始的编码

我想知道你是否可以帮助我设计一种毫不费力的方法来编码我正在使用的这个国家/地区年度事件数据.

在下面的示例中,每一行都对应一个正在进行的事件(我最终将折叠成一个更广泛的面板数据集,这就是为什么它现在看起来很简陋).因此,例如,国家29在1920年开始发生事件,并在1921年继续(并结束).国家23在1921年开始了这一事件,持续到1923年.国家35开始了一个事件,发生在1921年,仅在1921年,等等.

country     year
  29        1920
  29        1921
  23        1921
  23        1922
  23        1923
  35        1921
  64        1926
  135       1928
  135       1929
  135       1930
  135       1931
  135       1932
  135       1933
  135       1934
  120       1930
  70        1932
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建"开始"和"持续"变量.此示例数据框中的"正在进行的"变量很容易.基本上:Data$ongoing <- 1

我更感兴趣的是创建"起始"变量.如果它标志着给定国家的事件发生,它将被编码为1.基本上,我想创建一个看起来像这样的变量,给出这个示例数据.

country     year     onset
  29        1920       1
  29        1921       0  
  23        1921       1
  23        1922       0
  23        1923       0
  35        1921       1
  64        1926       1
  135       1928       1
  135       1929       0
  135       1930       0
  135       1931       0
  135       1932       0 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation panel-data

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

在R中的两个矩阵中配对元素

我试图将两个矩阵中的元素配对,这两个矩阵由以下代码块生成:

    set.seed(29)
    y = rnorm(16)
    yn = paste('n', 1:16, sep='')
    y = embed(y, 3)
    yn = embed(yn, 3)
    ycomp = y[, rep(3, ncol(y))]
    yncomp = yn[, rep(3, ncol(y))]
    logitable = (ycomp - y) < 1
    yn[logitable] = NA
    yncomp[logitable] = NA
    yn
    #      [,1]  [,2]  [,3]
    # [1,] NA    NA    NA
    # [2,] NA    NA    NA
    # [3,] "n5"  NA    NA
    # [4,] NA    "n5"  NA
    # [5,] NA    NA    NA
    # [6,] "n8"  "n7"  NA
    # [7,] NA    NA …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation

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

不使用第三方软件包,有没有办法计算分类数据计数的行百分比?

我有一些异常情况,我目前无法将第三方软件包下载到我的R设置中.以此为约束,有没有办法总结以下餐厅位置数据和关闭/打开状态?

一个count(business,vars=c("city","open"))在我的数据给了我这样的事情:

"City"       "Open"   "Frequency"
Wickenburg   False    2
Wickenburg   True     26
Wittmann     True     2
Wittmann     False    2
Youngtown    True     7
Yuma         True     1
Run Code Online (Sandbox Code Playgroud)

这是一个频率表,显示在给定城市中有多少餐厅都是开放式和封闭式的.

我想按组找到百分比.示例输出看起来像这样

"City"       "Open"   "Frequency"    "Pct of City"
Wickenburg   False    2               7.7
Wickenburg   True     26              92.3
Wittmann     True     2               50.0
Wittmann     False    2               50.0
Youngtown    True     7               100.0
Yuma         True     1               100.0
Run Code Online (Sandbox Code Playgroud)

在香草R中最简单的方法是什么?

aggregate r data-manipulation summarization

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

R计算特定值的实例

我有一个data.frame如下

df <- read.table(header = T, text = "Item.Nbr supply demand
1   82078-002          1  1
2   82078-007           2 0
3   82078-007          4 0
4   82078-007           0 0
5   82078-007           0 7")
> df
   Item.Nbr supply demand
1 82078-002      1      1
2 82078-007      2      0
3 82078-007      4      0
4 82078-007      0      0
5 82078-007      0      7
Run Code Online (Sandbox Code Playgroud)

我想计算Item.Nbr发生0次供需的次数,我也想知道Item.Nbr供应和需求的次数是多少次.

   Item.Nbr 0_supply 0_demand 0_both
1 82078-002      0      0       0
2 82078-007      2      3       1
Run Code Online (Sandbox Code Playgroud)

r data-manipulation

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

R:如何选择具有两个条件的行(购买两个产品)

我有一个类似于以下的数据集:

 ID = c(1,2,3,4,1,2,3) 
 Product = c("a", "b", "c", "a","b","a","a") 
 Quantity = c(1,1,1,1,1,1,1) 
 df = data.frame(ID, Product, Quantity)

#  ID Product Quantity
#1  1       a        1
#2  2       b        1
#3  3       c        1
#4  4       a        1
#5  1       b        1
#6  2       a        1
#7  3       a        1
Run Code Online (Sandbox Code Playgroud)

我想选择同时购买产品a和产品b的人.在上面的例子中,我想要的结果是:

ID Product Quantity
1  a       1
2  b       1
1  b       1
2  a       1
Run Code Online (Sandbox Code Playgroud)

我不记得一个为我这样做的功能.我能想到的是循环,但我希望找到一个更简洁的解决方案.

r data-manipulation

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

为文件中的重复行添加行号

我的文本文件读作:

111
111
222
222
222
333
333
Run Code Online (Sandbox Code Playgroud)

我生成的文件看起来像:

1,111
2,111
1,222
2,222
3,222
1,333
2,333
Run Code Online (Sandbox Code Playgroud)

或者生成的文件可能如下所示:

1
2
1
2
3
1
2
Run Code Online (Sandbox Code Playgroud)

我在这里指定了一个逗号作为分隔符,但是分隔符是什么并不重要---我可以在将来修改它.实际上,我甚至不需要原始文本文件内容,只需要行数字,因为我可以将行号粘贴到原始文本文件.

我只是不确定如何根据重复的条目对行进行编号.

列表中的所有项目至少重复一次.文件中没有一行出现过.

bash awk command-line sed data-manipulation

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

使用jq重塑json数据

我正在尝试重塑一个json文档,我认为使用jq很容易,但我现在没有尝试几个小时但没有成功......

(请注意,我不是jq jedi,而且doc没有帮助)

我想离开这个:

{
  "results": [
    {
      "profile": {
        "birthYear": 1900,
        "locale": "en_EN",
        "city": "Somewhere, Around",
        "timezone": "2",
        "age": 52,
        "gender": "m"
      },
      "UID": "SQSQSQerl7XSQSqSsqSQ"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

对此:

{
   "birthYear": 1900,
   "locale": "en_EN",
   "city": "Somewhere, Around",
   "timezone": "2",
   "age": 52,
   "gender": "m",
   "UID": "SQSQSQerl7XSQSqSsqSQ"
}
Run Code Online (Sandbox Code Playgroud)

我使用此过滤器获得了以下内容:.results [] .profile,.results [].UID

{
   "birthYear": 1900,
   "locale": "en_EN",
   "city": "Somewhere, Around",
   "timezone": "2",
   "age": 52,
   "gender": "m"   
}
"UID": "SQSQSQerl7XSQSqSsqSQ"
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助..

json data-manipulation jq

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

将"实际年份"列更改为相对于另一列中的值的列

我有一个如下所示的数据表:

ID    Start_Year    Payment_2010    Payment_2011    Payment_2012    Payment_2013
 1          2010              19              15              NA              11
 2          2012              22              24              26              23
 3          2012              NA              NA              NA              05   
 4          2011              17              NA              14              NA       
Run Code Online (Sandbox Code Playgroud)

对于许多行,它都是这样的,总共有大约20年的付款列.

我需要使用R或SQL重新定义它,当前的Payment列替换为第一列(Payment_1)表示Start_Year列中的值的列,并且列从那里开始依次进行.例如,我想让上面的表看起来像这样:

ID    Start_Year    Payment_1    Payment_2    Payment_3    Payment_4
 1          2010           19           15           NA           11
 2          2012           26           23           NA           NA
 3          2012           NA           05           NA           NA   
 4          2011           NA           14           NA           NA    
Run Code Online (Sandbox Code Playgroud)

因此,可以放弃在开始年份之前的第一个表中的任何付款信息.如果付款信息不可用,则该值应为NULL或NA(不为零,因为这些与我的数据中的NA不同).

我开始尝试使用动态SQL基于Start_year列创建新列,但是卡住了.我通过使用扩展和收集来自R中的dplyr包的命令更接近,但我的管道一直出错,我找不到丢弃start_year值之前的付款信息的方法.

任何帮助非常感谢,非常感谢提前.

(我知道这是一种奇怪的格式,希望将数据输入,但这就是我需要做的事情).

sql r data-manipulation dplyr data.table

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