如何删除列中的可变字符?

时间:2018-07-22 14:15:00

标签: r

我正在尝试从数据框中的列中删除附加的“ s。#”:

Species <- c("Dogs.1","Dogs.2","Dogs.3","Cats.1","Cats.2","Cats.3")
Breed <- c("Great Dane","Beagle","Beagle","Bengal","Tabby","Siamese")

names(Species) <- "Species"
names(Breed) <- "Breed"

pets <- as.data.frame(cbind(Species,Breed))

这将产生以下数据帧:

  Species      Breed
1  Dogs.1 Great Dane
2  Dogs.2     Beagle
3  Dogs.3     Beagle
4  Cats.1     Bengal
5  Cats.2      Tabby
6  Cats.3    Siamese

我希望输出看起来像这样:

  Species  Breed
1  Dog     Great Dane
2  Dog     Beagle
3  Dog     Beagle
4  Cat     Bengal
5  Cat     Tabby
6  Cat     Siamese

是否有一种方法可以操纵“种类”列来取出“。#”?

3 个答案:

答案 0 :(得分:1)

编辑: :要从“物种”列中也删除s,请使用以下命令。

sub("s\\..*","",pets$Species)

也要使用小写字母来覆盖小写sS

sub("[Ss]\\..*","",pets$Species)


请您尝试以下。

sub("\\..*","",pets$Species)

或者如果“种类”列始终具有.digits,则使用以下内容。

sub("\\.[0-9]+","",pets$Species)

如果要将输出保存在数据框的列本身中,请使用以下命令。

pets$Species <- sub("\\..*","",pets$Species)

答案 1 :(得分:1)

我们可以在此处使用sub。下面的专利将删除一个点后跟一个或多个数字,这是Species文本中的最后一项。我还删除了一个可选字母s,该字母可能会(也可能不会)出现在圆点之前。

pets$Species <- sub("s?\\.\\d+$", "", pets$Species)
pets

  Species      Breed
1     Dog Great Dane
2     Dog     Beagle
3     Dog     Beagle
4     Cat     Bengal
5     Cat     Tabby
6     Cat     Siamese

Demo

答案 2 :(得分:0)

这是另一种解决方案:

CommandInvokationFailure: Gradle build failed. 
C:/Program Files/Java/jdk1.8.0_172\bin\java.exe -classpath "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleRelease"

stderr[
C:\Users\taouf\Desktop\BusSubwayMultiplayerSale19092017\Temp\gradleOut\src\main\AndroidManifest.xml:17:3-79 Error:
Element uses-permission#android.permission.WRITE_EXTERNAL_STORAGE at AndroidManifest.xml:17:3-79 duplicated with element declared at AndroidManifest.xml:12:3-106
C:\Users\taouf\Desktop\BusSubwayMultiplayerSale19092017\Temp\gradleOut\src\main\AndroidManifest.xml Error:
Validation failed, exiting

FAILURE: Build failed with an exception.

我经常发现,当数据帧为长格式且字符串格式化为something。#或something_#时,末尾附加的#可以保存可用于分组,构面,统计信息和/的有价值的信息。或未来的数据可视化。不过,我不确定这是否是您的情况,但这是一种将信息的两位分开以保留附加信息的方法。

library(stringr)
str_extract(pets$Species, "^.*(?=s)")
[1] "Dog" "Dog" "Dog" "Cat" "Cat" "Cat"