【问题标题】:How do i compress string data with the same characters within a column of a data frame in R [duplicate]如何在R中的数据框的列中压缩具有相同字符的字符串数据[重复]
【发布时间】:2014-10-02 16:29:50
【问题描述】:

我有一个带有字符串列的数据框,我需要将所有相等的值压缩为一个值。我的数据集示例:

                      CommonName Month                      Site season period
23                Gambel's Quail   Oct McDowell Sonoran Preserve Autumn      4
24              American Kestrel   Nov McDowell Sonoran Preserve Autumn      4
25        Black-throated Sparrow   Nov McDowell Sonoran Preserve Autumn      4
26              Brewer's Sparrow   Nov McDowell Sonoran Preserve Autumn      4
27                  Common Raven   Nov McDowell Sonoran Preserve Autumn      4
28                Gilded Flicker   Nov McDowell Sonoran Preserve Autumn      4
29             Loggerhead Shrike   Nov McDowell Sonoran Preserve Autumn      4
30             Loggerhead Shrike   Nov McDowell Sonoran Preserve Autumn      4
31          Northern Mockingbird   Nov McDowell Sonoran Preserve Autumn      4
32               Red-tailed Hawk   Nov McDowell Sonoran Preserve Autumn      4
33         White-crowned Sparrow   Nov McDowell Sonoran Preserve Autumn      4
107             Acorn Woodpecker   Oct McDowell Sonoran Preserve Autumn      4
108                 Say's Phoebe   Nov McDowell Sonoran Preserve Autumn      4
236               Abert's Towhee   Nov        Brown's Ranch Wash Autumn      4
237                  Cactus Wren   Nov        Brown's Ranch Wash Autumn      4
238                Canyon Towhee   Nov        Brown's Ranch Wash Autumn      4
239        Curve-billed Thrasher   Nov        Brown's Ranch Wash Autumn      4
240               Gambel's Quail   Nov        Brown's Ranch Wash Autumn      4

这些数据跨越多年,因此一个物种可能会被多次列出。这是我想避免的,因为我只是想确定每个地点和季节内物种的出现。所以在这个例子中,我只想为 Loggerhead Shrike 和 Gambel's Quail 提供一个数据点,而其他一切都保持不变。我感谢您的帮助。我一直没有成功寻找类似的问题,但我不知道这个过程会被称为什么。

【问题讨论】:

  • data[!duplicated(data$CommonName),]

标签: r string dataframe


【解决方案1】:

要“确定每个地点和季节内出现的物种”,请尝试以下操作:

> with(ddf, table(CommonName, Site, Season))

, , Season = Autumn

                        Site
CommonName               BrownsRanch McDowell
  Aberts Towhee                    1        0
  Acorn Woodpecker                 0        1
  American Kestrel                 0        1
  Black-throated Sparrow           0        1
  Brewers Sparrow                  0        1
  Cactus Wren                      1        0
  Canyon Towhee                    1        0
  Common Raven                     0        1
  Curve-billed Thrasher            1        0
  Gambels Quail                    1        1
  Gilded Flicker                   0        1
  Loggerhead Shrike                0        2
  Northern Mockingbird             0        1
  Red-tailed Hawk                  0        1
  Says Phoebe                      0        1
  White-crowned Sparrow            0        1

或者:

> with(ddf, table(CommonName, Season, Site))
, , Site = BrownsRanch

                        Season
CommonName               Autumn
  Aberts Towhee               1
  Acorn Woodpecker            0
  American Kestrel            0
  Black-throated Sparrow      0
  Brewers Sparrow             0
  Cactus Wren                 1
  Canyon Towhee               1
  Common Raven                0
  Curve-billed Thrasher       1
  Gambels Quail               1
  Gilded Flicker              0
  Loggerhead Shrike           0
  Northern Mockingbird        0
  Red-tailed Hawk             0
  Says Phoebe                 0
  White-crowned Sparrow       0

, , Site = McDowell

                        Season
CommonName               Autumn
  Aberts Towhee               0
  Acorn Woodpecker            1
  American Kestrel            1
  Black-throated Sparrow      1
  Brewers Sparrow             1
  Cactus Wren                 0
  Canyon Towhee               0
  Common Raven                1
  Curve-billed Thrasher       0
  Gambels Quail               1
  Gilded Flicker              1
  Loggerhead Shrike           2
  Northern Mockingbird        1
  Red-tailed Hawk             1
  Says Phoebe                 1
  White-crowned Sparrow       1

我将一些季节条目更改为春季:

> with(ddf, table(CommonName, Season, Site))
, , Site = BrownsRanch

                        Season
CommonName               Autumn Spring
  Aberts Towhee               0      1
  Acorn Woodpecker            0      0
  American Kestrel            0      0
  Black-throated Sparrow      0      0
  Brewers Sparrow             0      0
  Cactus Wren                 0      1
  Canyon Towhee               1      0
  Common Raven                0      0
  Curve-billed Thrasher       1      0
  Gambels Quail               1      0
  Gilded Flicker              0      0
  Loggerhead Shrike           0      0
  Northern Mockingbird        0      0
  Red-tailed Hawk             0      0
  Says Phoebe                 0      0
  White-crowned Sparrow       0      0

, , Site = McDowell

                        Season
CommonName               Autumn Spring
  Aberts Towhee               0      0
  Acorn Woodpecker            0      1
  American Kestrel            1      0
  Black-throated Sparrow      1      0
  Brewers Sparrow             1      0
  Cactus Wren                 0      0
  Canyon Towhee               0      0
  Common Raven                1      0
  Curve-billed Thrasher       0      0
  Gambels Quail               1      0
  Gilded Flicker              1      0
  Loggerhead Shrike           0      2
  Northern Mockingbird        0      1
  Red-tailed Hawk             0      1
  Says Phoebe                 0      1
  White-crowned Sparrow       0      1

要删除名称、站点和季节相同的多余行:

> ddf[!duplicated(paste(ddf$CommonName,ddf$Site,ddf$Season)),]
               CommonName Month        Site Season period
1           Gambels Quail   Oct    McDowell Autumn      4
2        American Kestrel   Nov    McDowell Autumn      4
3  Black-throated Sparrow   Nov    McDowell Autumn      4
4         Brewers Sparrow   Nov    McDowell Autumn      4
5            Common Raven   Nov    McDowell Autumn      4
6          Gilded Flicker   Nov    McDowell Autumn      4
7       Loggerhead Shrike   Nov    McDowell Autumn      4
9    Northern Mockingbird   Nov    McDowell Autumn      4
10        Red-tailed Hawk   Nov    McDowell Autumn      4
11  White-crowned Sparrow   Nov    McDowell Autumn      4
12       Acorn Woodpecker   Oct    McDowell Autumn      4
13            Says Phoebe   Nov    McDowell Autumn      4
14          Aberts Towhee   Nov BrownsRanch Autumn      4
15            Cactus Wren   Nov BrownsRanch Autumn      4
16          Canyon Towhee   Nov BrownsRanch Autumn      4
17  Curve-billed Thrasher   Nov BrownsRanch Autumn      4
18          Gambels Quail   Nov BrownsRanch Autumn      4

请注意,引号(如 Gambel 的)在字符串条目中不好用,已从上述数据中删除。

【讨论】:

  • 我使用了您的建议并将代码与 (ddf,table(CommonName,season,Site)这种新格式。它将所有数据压缩成原始格式,并使用通用名称、站点、季节和频率作为列标题。您知道如何将其转换为 xlsx,同时保持这种新格式方法与单独的季节和将站点名称转换为 xlsx 工作表名称?感谢您之前提供的有见地的帮助
  • 使用库(XLConnect)。见这里:stackoverflow.com/questions/15676104/…。您可以遍历数据并保存到不同的工作表。您还可以在搜索此站点时找到其他帖子。否则另开一篇文章以获得详细答案。
猜你喜欢
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2013-04-27
相关资源
最近更新 更多