一次更改许多列的值——model.matrix()?

2024-03-22

这是我当前拥有的结构的 dput() 。

structure(list(id = c(1, 1, 2, 4, 4), country = c("USA", "Japan",  "Germany", "Germany", "USA"), USA = c(0, 0, 0, 0, 0), Germany = c(0,  0, 0, 0, 0), Japan = c(0, 0, 0, 0, 0)), class = "data.frame", row.names = c(NA,  -5L))

我想编辑此数据框以获得以下结果,以便将此方法应用于具有 100k 以上观察值的数据集。具体来说,我想使用来自(df$country)描述分配给特定 ID 的国家(例如,id == 1 and country == Japan),并将相应列名(例如,名为“Japan”的列)的列值更改为 1。请注意,ID 不是唯一的!

这就是我想要的结果:

structure(list(id = c(1, 1, 2, 4, 4), country = c("USA", "Japan",  "Germany", "Germany", "USA"), USA = c(1, 1, 0, 1, 1), Germany = c(0,  0, 1, 1, 1), Japan = c(1, 1, 0, 0, 0)), class = "data.frame", row.names = c(NA,  -5L))

以下代码给出了接近的结果:

df[levels(factor(df$country))] = model.matrix(~country - 1, df)

但最终给了我以下内容,错误结构:

structure(list(id = c(1, 1, 2, 4, 4), country = c("USA", "Japan", 
"Germany", "Germany", "USA"), USA = c(1, 0, 0, 0, 1), Germany = c(0, 
0, 1, 1, 0), Japan = c(0, 1, 0, 0, 0)), row.names = c(NA, -5L
), class = "data.frame") 

如何编辑上述命令以获得我想要的结果?我不能使用枢轴因为实际上,我正在处理许多在“国家/地区”列中具有不同值的数据集,这些数据集一旦旋转,将产生具有不均匀列/结构的数据集,这将阻碍以后的数据分析。

感谢您的任何帮助!


也许这有帮助

library(dplyr)
df %>% 
    mutate(across(USA:Japan, ~  +(country == cur_column()))) %>% 
    group_by(id) %>% 
    mutate(across(USA:Japan, max)) %>% 
    ungroup

-output

# A tibble: 5 × 5
     id country   USA Germany Japan
  <dbl> <chr>   <int>   <int> <int>
1     1 USA         1       0     1
2     1 Japan       1       0     1
3     2 Germany     0       1     0
4     4 Germany     1       1     0
5     4 USA         1       1     0

或者修改model.matrix as

m1 <- model.matrix(~country - 1, df)
m1[] <- ave(c(m1), df$id[row(m1)], col(m1), FUN = max)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一次更改许多列的值——model.matrix()? 的相关文章

  • 当重复的行具有不同的值时,如何将 DataFrame 上的重复行合并为一行

    我有一个DataFrame像下面这样 ID NAME TEL 1 TEL 2 TEL 3 1 John 123456 754987 465317 1 John 465987 465987 1 John 546783 2 Robert 264
  • 通过 :: 调用包中的函数是一个好习惯吗

    我正在编写一些 R 函数 这些函数在其他包中使用一些有用的函数 例如stringr and base64enc 不打电话好不好library or require 首先加载这些包但要使用 直接引用我需要的功能 比如stringr str m
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • 如果指定了多个存储库,install.packages 的行为是什么?

    从文档中并不清楚如果在 install packages 中指定了多个存储库会出现什么行为 我的直觉告诉我 它将尝试第一个存储库 如果找不到包 它将尝试第二个存储库 依此类推 不幸的是 情况似乎并非如此 我看到的是 只尝试了第一个 并返回错
  • R 中的输出,避免写“[1]”

    I use print从 R 中的函数输出 例如 print blah blah blah 这输出 1 blah blah blah 到控制台 我怎样才能避免 1 和引号 Use cat Your string type cat查看帮助页面
  • 获取所有参数作为列表

    R 是否提供对象 函数 方法 关键字来获取所有函数参数 使用一个例子 function a b default 会提供a and b也 在函数环境内 有没有类似的说法list 这还包括a and b在结果中 或者换一种方式 简写list a
  • Pandas 使用什么规则来生成视图和副本?

    我对 Pandas 在决定数据帧中的选择是原始数据帧的副本或原始数据帧的视图时使用的规则感到困惑 例如 如果我有 df pd DataFrame np random randn 8 8 columns list ABCDEFGH index
  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R
  • Pandas:如何删除以 nan 作为列名的多个列?

    根据标题 这是一个可重现的示例 raw data x this that this that this np nan np nan np nan np nan np nan np nan y np nan np nan np nan np
  • 使用 ggplot 未完全填充等值线图

    我正在尝试使用以下方法绘制我的第一个填充等高线图ggplot 根据我的数据 我期待类似的结果 但我的结果是 a lt c 1 1 1 1 1 3 1 2 2 2 2 2 2 5 2 1 3 3 3 3 1 3 2 b lt c rep c
  • 检索除指定一列之外的所有 DataFrame [重复]

    这个问题在这里已经有答案了 有没有办法选择 pandas DataFrame 对象中除一列之外的所有列 我已经看到了删除列的方法 但我不想这样做 use drop method df drop column name axis 1
  • R源代码.调用函数[重复]

    这个问题在这里已经有答案了 我正在查看R中cov的source code 并遇到了一段我不太明白的代码 协方差的数学定义goes http en wikipedia org wiki Covariance here if method pe
  • 如何在 R 中绘制预测的子集?

    我有一个简单的 R 脚本来根据文件创建预测 自 2014 年以来就有数据记录 但我在尝试实现以下两个目标时遇到了困难 仅绘制预测信息的子集 从 11 2017 开始 以特定格式包含月份和年份 即 6 月 17 日 这是链接到dataset
  • R testthat 单元测试数据和辅助函数约定

    我正在编写一个 R 包 并使用 testthat 进行单元测试 我的许多单元测试都是为了测试适用于我的包特定对象的功能 对于这些测试 我创建了一个辅助函数来设置模拟对象 我还有一些其他辅助函数来减少单元测试中的代码量 目前这些辅助函数在我的
  • R 抑制系统或 shell 命令的控制台输出

    我有这个 Windows 批处理文件 我使用 R 从 R 调用该文件shell 命令 该批处理文件执行一些计算并将它们写入磁盘上 也写入屏幕上 我只对磁盘输出感兴趣 我无法更改批处理文件 批处理文件可能有点愚蠢 例如 echo off ec
  • 如何在主图区域之外的 ggplot2 中添加多个标题

    我想为页脚添加两个标题 但 ggplot 似乎只需要 1 是否有解决方法可以将注释或 geom text 添加到左下角和右下角 library ggplot2 p lt ggplot mtcars aes x wt y mpg geom p
  • 如何更改数据表中的少数列名称

    我有一个包含 10 列的数据表 town tc one two three four five six seven total 需要生成我正在使用的列 一 到 总计 的平均值 DTmean lt DT lapply SD mean by t
  • 如何在 R 树形图中省略标签?

    我一直在使用R 树形图包 http cran r project org web packages treemap treemap pdf我有一个 2 层深的树形图 我希望打印第二级标签 但不打印第一级标签 使用手册页中的示例 tmPlot
  • Pandas 数据框可对多列和要列出的值进行字典

    我有一个数据框 id key a1 1 a2 1 a3 1 a4 2 a5 2 a6 3 我想创建一本字典key作为机器号 并且id列作为列表 like 1 a1 a2 a3 2 a4 a5 3 a6 我可以先使用 groupby 然后再使
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9

随机推荐

  • 从 Android WebView 中启动地图

    我有一个 Android 应用程序 它在 WebView 中显示内容 其中包含一个应该打开地图的链接 我有要链接的位置的纬度 经度和街道地址 但我不确定链接的正确格式 大约一周时间没有收到社区对此的任何答复或评论 最后我只是选择 http
  • D3D11 不知从何增加了引用计数?

    我已经使用 d3d11 有一段时间了 在发现 directx 调试器之后 我最近发现我的程序从所有未正确释放的 com 对象中到处泄漏内存 经过一番窥探和盯着代码几个小时后 我开发了一些方法来隔离引用计数意外增加的位置 首先 所有对象都被包
  • 在数据库中存储 JS 数组和对象

    我有一个应用程序 可以让用户用 JS 构建东西 我希望用户能够保存其工作的当前状态以重用或共享它 但他拥有的是存储在 JS 数组中的 JS 对象的集合 具有非常不同的属性 颜色 标签 x y 位置 大小等 SQL 对于该特定任务来说似乎很糟
  • Jenkins:Git 推送将触发仅针对该分支的 Jenkins 构建

    我们正在多个 Git 分支上并行工作 当推送特定的 Git 分支时 我们如何启动 Jenkins 项目 作业来触发该特定分支的构建 举个例子 我们推送一个 Git 分支 feature abc gt 这应该会触发使用 拉动该分支 featu
  • 我可以阻止 numpy.array 将元素转换为 numpy 数组吗?

    我正在尝试将以下内容转换为间隔对象的 2x2 numpy 数组 from interval import interval from the pyinterval package import numpy as np np array in
  • 在循环内附加到 numpy 数组

    我真的希望没有遗漏一些东西 之前已经澄清过 但我在这里找不到东西 这个任务看起来很简单 但我失败了 我想在 for 循环中连续将一个 numpy 数组附加到另 一个数组 step n 10 steps np empty step n 1 f
  • 如何将 groovy 变量传递给 shell 块 jenkins

    我有一个常规变量 我想将其传递给 shell 块以进行进一步处理 但我不断收到粘贴在下面的错误 stages stage First Stage echo out available variables steps script def s
  • 有什么方法可以在免费的heroku dyno上添加免费的SSL证书吗?

    我有一个 heroku 免费计划 它在带有 PointDNS 附加组件的自定义域上运行 因此它可以为 DNS 提供商提供名称服务器 如果这很重要 我已在我的自定义域 https 上启动并运行该网站 但 ssl 证书指向 herokuapp
  • 将引导面板宽度设置为文本宽度

    我是 HTML Bootstrap 新手 所以也许这相当简单 How do you set the panel width引导面板 http getbootstrap com components panels其文本的长度 如果面板无法实现
  • wsdl2py 复杂类型

    如何向 SOAP 请求添加复杂类型 我正在使用 WSDL2py 生成的请求 并尝试使用它在 types py 文件中创建的其他 TypeDefinitions 例如 AccountInfo 用于身份验证 它会进入每个请求 然后将其传递给 w
  • 基于 webkit 的浏览器将 json 解释为脚本

    我只是尝试通过 js 获取我的 Zootool 项目 将它们推送到我的博客页脚中 但没有成功 这是我使用的代码 jquery框架 jQuery document ready function first try var url http z
  • 使用 jspdf 将图像 url 转换为 pdf

    function convertImgToBase64 url var canvas document createElement canvas var ctx canvas getContext 2d img document creat
  • 编译/运行时字符串文字的原始字节流入/流出 Windows(非宽)执行字符集,以及 ANSI 代码页与 UTF-8

    我想确认我对原始字符串文字和 非宽 的理解execution character set在 Windows 上 我希望具体确认的相关段落以粗体显示 但首先 有一些背景知识 背景 相关问题见下文bold 由于下面的有益讨论 TheUndead
  • 使用 Python 函数并生成所有导数

    我有一个参数数量可变的 python 函数 F x1 x2 xN 我想自动生成 N 个函数 表示 F 对每个参数的导数 F 1 dF dx1 F 2 dF dx2 F N dF dxN 例如 我可以同时提供 F x1 sin x1 和 F
  • C,从单个输入行读取多个数字(scanf?)

    我用 C 编写了一个应用程序 需要输入两行 第一个输入告诉 int 数组有多大 第二个输入包含由空格分隔的值 例如 输入以下内容 5 1 2 3 4 99 应该创建一个包含 1 2 3 4 99 最快的方法是什么 我的问题是读取多个数字而不
  • 在 WP7 上将 PivotItem 数据绑定到 ObservableCollection

    我想将 ObservableCollection 数据绑定到 WP7 中的 Pivot 控件 以便 ObservableCollection 中的每个对象都成为 PivotItem 这是我使用的代码
  • JavaScript 全局变量在函数内变为未定义

    由于某种原因 JavaScript 全局变量在函数内部变得未定义 不明白为什么 您可以复制并运行代码 正如您所看到的 全局变量 target 在第一个警报中定义 但随后在函数内变为未定义 这是代码
  • Python 中的快速排序实现

    我正在尝试在 python 中实现快速排序 但是 我的代码没有正确排序 不完全 例如 在输入数组 5 3 4 2 7 6 1 上 我的代码输出 1 2 3 5 4 6 7 所以 最终结果插入了 4 和 5 我承认我对 python 有点生疏
  • 如何定义 CollectionType 的扩展,以便其方法可用于字典?

    我最近能够更改扩展名 extension Array where Element Encodable to extension CollectionType where Generator Element Encodable 为了以后能够应
  • 一次更改许多列的值——model.matrix()?

    这是我当前拥有的结构的 dput structure list id c 1 1 2 4 4 country c USA Japan Germany Germany USA USA c 0 0 0 0 0 Germany c 0 0 0 0